Como devo construir esse modelo de django para fazer o que eu quero
-
20-09-2019 - |
Pergunta
Isso é o que eu tinha antes (mas percebi que você obviamente não pode fazê -lo nesta ordem:
class MasterAdmin(models.Model):
"""
A permanent admin (one per Account) that shouldn't be deleted.
"""
admin = models.OneToOneField(AccountAdmin)
class Account(models.Model):
"""
A top-level account in the system.
"""
masteradmin = models.OneToOneField(MasterAdmin)
class AccountAdmin(models.Model):
"""
An Account admin that can be deleted. This includes limited permissions.
"""
account = models.ForeignKey(Account)
Eu acho que você pode ver o que eu quero fazer com o exemplo. Quero ter um MasterAccountAdMin que compartilha os atributos do AccountAdmin. O objetivo é que eu queira dar às pessoas a capacidade de excluir uma conta de conta, mas não o MasterAccountAdmin. Eu não queria apenas ter um atributo no AccountAdmin chamado "master = models.booleanfield ()".
Obviamente, este exemplo não funcionará porque o MasterAdmin está referenciando o AccountAdmin antes de sua criação, mas eu queria mostrar o que estou tentando alcançar. Estou pensando nisso tudo errado?
Solução
Por que não apenas fazer do IS_MASTER uma propriedade do AccountAdmin e, em seguida, substituir o método Delete () para garantir que o IS_Master não seja verdadeiro?
Outras dicas
Quando você tiver referências avançadas, use as cotações.
admin = models.OneToOneField('AccountAdmin')
Se você precisar criar um relacionamento em um modelo que ainda não tenha sido definido, você pode usar o nome do modelo, em vez do próprio objeto do modelo ...