django-logicaldelete

Tela Software:
django-logicaldelete
Detalhes de Software:
Versão: 1.1 Beta 1 Dev3
Data de upload: 12 May 15
Revelador: Patrick Altman
Licença: Livre
Popularidade: 30

Rating: nan/5 (Total Votes: 0)

comentários de Desenvolvedor
django-logicaldelete é um pequeno e simples aplicativo que eu joguei em conjunto para obter alguns reutilização de algo que eu faço em quase cada projeto e cada modelo que eu criar. & nbsp; É muito fácil para bons dados para ficar excluído e irrecuperável. É também muito fácil de corrigir isso, substituindo o método do modelo delete () e apenas a sinalização de registros como excluído e, em seguida, aproveitando Gestores do Django para substituir o comportamento padrão para que os itens excluídos logicamente não são devolvidos nos querysets.
Há duas exceções no entanto, que eu encontrei útil a esta regra.
& Nbsp; 1. No administrador Eu gosto de ver tudo com um indicador de se é ou não tenha sido excluído, com a capacidade de filtrar até registros apenas activas (ou eliminados para que o assunto).
& Nbsp; 2. Eu ainda acho que é um pedido válido quando um item é buscada pelo seu valor de chave primária, que o objeto deve retornar, mesmo que seja marcado como excluído.
Usando django-logicaldelete
Usando o aplicativo é bastante simples:
& Nbsp; 1. Coloque a sub-pasta logicaldelete em seu caminho Python.
& Nbsp; 2. Herdar de logicaldelete.models.Model para todos os modelos que você deseja compartilhar essa funcionalidade.
& Nbsp; 3. Criar e / ou Cadastre-se administradores para cada um desses modelos usando logicaldelete.admin.ModelAdmin
adicionais
Exclusões lógicas são tratadas por data carimbar uma coluna date_removed. Além disso, um colunas DATE_CREATED DATE_MODIFIED e será preenchida como uma conveniência.
Extensões possíveis
Você pode facilmente subclasse essas duas classes para fornecer funcionalidade genérico e útil para os seus modelos.
UUID chave primária
Eu normalmente usando campos UUID para minhas chaves primárias, porque eles permitem-me caco minhas tabelas, se e quando eu preciso, além disso, eles fornecem um ID ofuscado aos meus dados (pessoas não podem determinar quantos de um determinado objeto que eu tenho em meu banco de dados, se eu não quero que eles saibam, mas simplesmente à procura de um ID de um número inteiro no URL).
Sequência de Campo
Muitas vezes eu achar que é útil ter um campo inteiro em meus modelos que permitem a sequenciação e explicitamente controlado. Eu normalmente implementar esta como uma implementação tipo descendente, onde os dados são classificados de alto a baixo em valor de seqüência.
A fim de implementar esta você subclasse tanto o modelo e ModelAdmin, onde o modelo seria uma adição simples óbvia de um IntegerField, o ModelAdmin, iria substituir get_query_set, para fazer algo como:
SequencedModel classe (logicaldelete.models.Model):
& Nbsp; seqüência = models.IntegerField ()
MyLogicalDeletedManager classe (logicaldelete.models.LogicalDeletedManager):
& Nbsp; def get_query_set (self):
& Nbsp; se self.model:
& Nbsp;. Qs = super (MyLogicalDeletedManager, self) .get_query_set () filtrar (date_removed__isnull = True)
& Nbsp; se SequencedModel em inspect.getmro (self.model):
& Nbsp; qs = qs.order_by ('- seqüência')
& Nbsp; qs retorno

O que é novo nesta versão:

  • Mudou tudo para all_with_deleted em LogicalDeleteManager
  • LogicalDeleteManager movido de logicaldelete.models para logicaldelete.managers
  • Removido excluído e tudo querysets de logicaldelete.models.Model

Requisitos :

  • Python
  • Django

Outro software de desenvolvedor Patrick Altman

Comentário para django-logicaldelete

Comentários não encontrado
Adicionar comentário
Ligue imagens!