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)

我想你可以从这个例子中看到我想要做什么。我想要一个 MasterAccountAdmin,它共享来自 AccountAdmin 的属性。目的是我想让人们能够删除 AccountAdmin,而不是 MasterAccountAdmin。我不想只在 AccountAdmin 上有一个名为“master = models.BooleanField()”的属性。

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

4

2 回答 2

3

为什么不直接将 is_master 设为 AccountAdmin 的属性,然后重写 delete() 方法以确保 is_master 不为真?

于 2009-12-17T18:16:11.443 回答
2

当您有前向引用时,请使用引号。

admin = models.OneToOneField('AccountAdmin')

请参阅文档

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

于 2009-12-17T18:26:46.093 回答