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?

Foi útil?

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')

Veja os documentos.

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 ...

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