Pergunta

Suponha que há duas (ou mais) Django administradores que têm ler um registro de banco de dados e, em seguida, mudar e guardá-lo. Não há nenhum problema de banco de dados, mas alguns administradores vão se surpreender que o registro que eles escreveram foi substituído.

É esta questão que já foi dirigida? Uma forma seria a de ter um botão explícita "editar em andamento", que define um sinalizador no registro. Se outro administrador lê o mesmo registro e, em seguida, clica em seu "editar em andamento" ele será avisado de que há uma edição anterior em andamento. Ou um campo pode ser adicionado ao registro que é incrementado quando um registro é salvo. Se o campo é diferente de quando o registro foi lido, o administrador é avisado de que o registro foi alterado por outra pessoa desde que ele lê-lo.

Existe uma maneira Django nativa de lidar com isso?

Foi útil?

Solução

O Django administrador não implementar qualquer proteção de conflito de gravação fora da caixa. Não seria duro para adicioná-lo a si mesmo. Pessoalmente, gostaria de tomar a abordagem "versão campo de número".

Outras dicas

Geralmente este é o lugar onde você quer ler sobre características transação de isolamento do seu banco de dados, porque é por isso que os tem.

Se você prefere não realmente fazer isso, existem vários padrões para fazer isso na camada de aplicação, mas não há nenhuma maneira canônica de fazê-lo - algumas pessoas definir uma espécie de "último acesso" timestamp e se recusam a permitir que edição dentro de um determinado período depois disso, outros criados números de versão, etc., etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top