2015-04-17 2 views
0

Мне нужно, чтобы мои пользователи django принадлежали к Office.Django - Присоединить данные к модели, которые не будут сохранены в базе данных

я сделал следующее, чтобы расширить модель пользователя по умолчанию:

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    office = models.ForeignKey('Office') 

Мой post_save сигнал для пользовательской модели вызывает эту функцию:

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
    profile = UserProfile.objects.create(
     user = instance, 
     office = instance.office 
    ) 

Я в принципе хочу, чтобы прикрепить офис «экземпляр» , Это означает, когда я создаю пользователя я делаю следующее:

user = User(
     office = office, 
     username = username, 
     email = email, 
     password = password 
    ) 

Но я получаю ошибку:

'office' is an invalid keyword argument for this function

что является нормальным, потому что офис не является полем для модели пользователя. Но есть ли способ сказать django игнорировать это поле, что это поле предназначено только для «переноса» информации временно?

ответ

1

Просто установите office в качестве простого атрибута:

user = User(username=username, email=email) 
user.set_password(password) 
user.office = office 
user.save() 
Смежные вопросы