这就是我之前所拥有的(但意识到你显然不能按此顺序进行:
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,但我想展示我想要实现的目标。我觉得这一切都错了吗?
答案 0 :(得分:3)
为什么不将is_master作为AccountAdmin的属性,然后覆盖delete()方法以确保is_master不为真?
答案 1 :(得分:2)
如果有前向引用,请使用引号。
admin = models.OneToOneField('AccountAdmin')
如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身......