创建以下两个模型的实例的合适方法是什么

class Administrator(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    account = models.ForeignKey(Account)

class Account(models.Model):
    owner = models.OneToOneField(Administrator)

两者相互需要。没有主用户 ( owner ) 就不能存在帐户,没有帐户就不能存在管理员(即 owner )。是的,一个通用的 User 对象可以单独存在,但我无法思考哪些应该首先出现以及如何正确实现它。如果我必须在管理员的帐户属性上使用 blank=True 我会,但有没有更好的方法?我应该使用事务来确保一个事务没有另一个就不能存在吗?

最佳答案

如果存在两个模型,每个模型都需要另一个模型,则通常应将它们组合成一个模型。

无论如何,可能有更好的方法来构造类。我个人会构造一个 UserProfile 类,如下所示:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    administrator = models.BooleanField()

或者可能:
class UserProfile(models.Model):
    user = models.OneToOneField(User)

class AdministratorProfile(UserProfile):
    # attributes

甚至:
class UserProfile(models.Model):
    user = models.OneToOneField(User):

class AdministratorProfile(models.Model):
    profile = models.OneToOneField(UserProfile)

这些方法中的任何一个都应该有效。

关于Django:双向一对一关系。鸡还是鸡蛋?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2298850/

10-12 22:17