什么是创建以下两个型号Django:双向一对一关系。小鸡还是鸡蛋?
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
是什么)不能没有帐户存在。是的,一个普通的用户对象可以独立存在,但我无法将我的大脑围绕在哪些应该优先的地方以及如何正确实现。如果我必须在管理员的帐户属性上使用blank = True,那么有没有更好的方法?我是否应该使用交易来确保没有其他交易的情况下不能存在?
+1用于使用用户配置文件(为此Django现在已内置支持)。 – jathanism 2010-02-19 19:33:09
啊是的,然后添加'AUTH_PROFILE_MODULE ='appname.UserProfile''到你的设置文件,以便在用户实例上调用'get_profile()'。 – 2010-02-19 19:49:55
你说得对。感谢今天所有的答案:)我认为这种方式(第二或第三个例子)是最好的,因为它是可扩展的。有一件事。你为什么不在用例子2中用UserProfile子类? – orokusaki 2010-02-20 02:07:43