django:创建两个模型取决于彼此

时间:2014-07-12 13:52:28

标签: django

试图解决相当简单的问题,但我有点失落。

class Person(models.Model):
    created_by = models.ForeignKey(User)

class User(models.Model):
    person = models.ForeignKey(Person)

用户是使用系统,登录,创建人员等的用户。 每个人都有创建它的信息。 每个用户也应该只有一个人,但能够创建无限的人

那么问题如何正确创建用户(注册时)并分配人员? 我无法保存没有用户的人,也无法保存没有用户的用户。

我认为在User模型中使用person.models.ForeignKey(Person,null = True)并不是一个好的设计,因为User必须有Person。

有什么建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

看起来User应该只从Person模型继承,因为每个用户都是一个人。顺便提一下,这也可以解决您的问题 - 创建User会自动创建关联的Person

你应该read about multi-table inheritance完全理解这是如何运作的。

此外,created_by字段应该指定null=True,因为任何人都不会创建第一个Person,因此第一个对象需要在那里有Null值。 / p>

class Person(models.Model):
    created_by = models.ForeignKey('User', null=True)

class User(Person):
    person = models.ForeignKey('Person')

此外,由于您希望将User模型用作AUTH_USER_MODEL,因此您应read about requirements for such models