我该如何构建这个Django模型来做我想做的事情

时间:2009-12-17 18:05:29

标签: python django django-models foreign-keys one-to-one

这就是我之前所拥有的(但意识到你显然不能按此顺序进行:

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)

我认为您可以从示例中看到我想要做的事情。我想要一个MasterAccountAdmin,它与AccountAdmin共享属性。目的是我想让人们能够删除AccountAdmin,但不能删除MasterAccountAdmin。我不想在AccountAdmin上有一个名为“master = models.BooleanField()”的属性。

显然这个例子不起作用,因为MasterAdmin在创建之前引用了AccountAdmin,但我想展示我想要实现的目标。我觉得这一切都错了吗?

2 个答案:

答案 0 :(得分:3)

为什么不将is_master作为AccountAdmin的属性,然后覆盖delete()方法以确保is_master不为真?

答案 1 :(得分:2)

如果有前向引用,请使用引号。

admin = models.OneToOneField('AccountAdmin')

See the docs

  

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身......