Frage

Das ist, was ich hatte vor (aber klar, dass man nicht offensichtlich es tut in dieser Reihenfolge:

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)

Ich denke, man kann sehen, was ich aus dem Beispiel tun will. Ich möchte eine MasterAccountAdmin haben, die die Attribute von AccountAdmin teilt. Der Zweck ist, dass ich den Menschen die Möglichkeit haben möchten, eine AccountAdmin zu löschen, aber nicht MasterAccountAdmin. Ich wollte nicht nur auf AccountAdmin ein Attribut namens „master = models.BooleanField ()“.

Natürlich wird dieses Beispiel nicht arbeiten, weil MasterAdmin verweist AccountAdmin vor seiner Gründung, aber ich wollte zeigen, was ich versuche zu erreichen. Bin ich denke an diese alle falsch?

War es hilfreich?

Lösung

Warum nicht einfach eine Eigenschaft von AccountAdmin machen is_master und überschreibt dann die delete () Methode, um sicherzustellen, is_master nicht wahr?

Andere Tipps

Wenn Sie Vorwärtsreferenzen haben, verwenden Sie die Anführungszeichen.

admin = models.OneToOneField('AccountAdmin')

Lesen Sie die Dokumentation .

  

Wenn Sie eine Beziehung auf einem Modell erstellen, die noch nicht definiert wurden, können Sie den Namen des Modells verwenden, anstatt das Modellobjekt selbst ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top