2013-03-06 174 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