2013-03-06 3 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 пользователя для данного экземпляра UserProfile (профиль пользователя является клиентом, который должен быть сохранен только один раз); если другой пользователь создан, он сможет управлять только определенным доменом и, следовательно, учетными записями электронной почты, созданными в этом домене. Он не должен иметь доступ к учетным записям электронной почты, созданным в любом другом домене для одного и того же пользователя после входа в систему. Я хочу использовать администратор django для этого.

+1

Я думаю, вы можете создать несколько пользователей в Userprofile, и ваша модель верна. Вы проверили это? – princess

+1

Если вы хотите создать более одного пользователя для экземпляра UserProfile, вы должны изменить тип поля с 'models.OneToOneField (User)' to 'models.ForeignKey (User)'. – Cole

+0

@ Положите это на то, что мы будем иметь для одного и того же пользователя, несколько пользовательских профилей, в точности противоположных тому, что я хочу! Обратите внимание, что я хочу использовать наследование пользователей для создания нескольких пользователей для одного и того же пользовательского файла. – user956424

ответ

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. В любом случае, чем за усилия. Cheers – user956424

+0

Почему это не работает? – Cole

+0

UserProfile - это расширение модели пользователя django.auth. Я пытаюсь наследовать пользователя как клиента. Я хочу добавить к клиенту администратора домена (другого пользователя). Атрибут организации UserProfile уникален в системе. Я не хочу добавлять еще один дублированный объект профиля для администратора домена клиента. – user956424

Смежные вопросы