0

これは私が以前持っていたものです(しかし、明らかにこの順序でそれを行うことはできないことに気づきました:

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)

例から私がやりたいことがわかると思います。AccountAdminの属性を共有するMasterAccountAdminが必要です。目的は、MasterAccountAdminではなくAccountAdminを削除できるようにすることです。AccountAdminに「master=models.BooleanField()」という属性を付けたくありませんでした。

MasterAdminは作成前にAccountAdminを参照しているため、この例は明らかに機能しませんが、私が達成しようとしていることを示したかったのです。私はこれをすべて間違っていると思っていますか?

4

2 に答える 2

3

is_masterをAccountAdminのプロパティにしてから、delete()メソッドをオーバーライドして、is_masterがtrueでないことを確認しないのはなぜですか?

于 2009-12-17T18:16:11.443 に答える
2

前方参照がある場合は、引用符を使用してください。

admin = models.OneToOneField('AccountAdmin')

ドキュメントを参照してください

まだ定義されていないモデルにリレーションシップを作成する必要がある場合は、モデルオブジェクト自体ではなく、モデルの名前を使用できます...

于 2009-12-17T18:26:46.093 に答える