创建以下两个模型的实例的合适方法是什么
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/