2013-03-06 130 views
0

考虑继承创建用户的django auth用户模型。如何在django中解析外键关系到用户模型

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

class Domain(models.Model): 
    customer = models.ForeignKey(User) 

class EmailAccount(models.Model): 
    domain = models.ForeignKey(Domain) 

我希望为给定用户配置实例创建1个多用户(用户配置文件是一个应该被存储一次客户);如果创建了另一个用户,他将只能管理该特定域,并因此能够管理在该域上创建的电子邮件帐户。一旦他登录,他应该无法访问在同一用户的任何其他域上创建的任何电子邮件帐户。我希望使用django管理员执行相同的操作。

+1

我想你可以在Userprofile中创建多个用户,并且你的模型是正确的。你测试过那个吗? – princess 2013-03-06 12:14:42

+1

如果您希望为UserProfile实例创建多个用户,则应该将字段类型从'models.OneToOneField(User)'更改为'models.ForeignKey(User)'。 – Cole 2013-03-06 14:45:49

+0

@Cole通过这样做,我们将为同一个用户,多个用户配置文件正好与我想要的相反!请注意我想使用用户继承来为同一个用户配置文件创建多个用户。 – user956424 2013-03-07 04:33:35

回答

0

Many-to-many关系允许任何一方很多。

class UserProfile(models.Model): 
    Users = models.ManyToMany(User) 

>>> u1 = User(id=1) 
>>> u2 = User(id=2) 
>>> user_profile = UserProfile() 
>>> user_profile.save() 
>>> user_profile.users.all() 
[] 
>>> user_profile.users.add(u1.id, u2.id) 
>>> user_profile.save() 
>>> user_profile.users.all() 
[<User: User object>, <User: User object>] 
+0

这不适用于我Cole。反正thanx的努力。欢呼 – user956424 2013-03-08 12:13:39

+0

它为什么不起作用? – Cole 2013-03-08 15:00:39

+0

UserProfile是django.auth用户模型的扩展。我试图继承用户作为客户。我想添加一个域管理员(另一个用户)给客户。 UserProfile组织属性在系统中是唯一的。我不想为客户的域管理员添加另一个重复的配置文件对象。 – user956424 2013-03-11 10:21:05