2010-09-24 2 views
0

Я использую модель UserProfile для хранения дополнительной информации о пользователе, а одно из полей - это переменная поддомена, которая по умолчанию должна быть установлена ​​на имя пользователя. Вот модель UserProfile:Установите значение по умолчанию для поля модели UserProfile из поля экземпляра пользователя

class UserProfile(models.Model): 
    theme = models.ForeignKey(Theme, unique=True, null=True) 
    user = models.ForeignKey(User, unique=True) 
    subdomain = models.CharField(default=self.user.username, max_length=30) 

Я реализовал функцию сигналов Django для автоматического создания экземпляра модели UserProfile при создании пользователя. Теперь мне нужно установить поддоменную переменную для имени пользователя. Как я могу это сделать?

ответ

1

Поскольку вы автоматически создавая UserProfile с использованием сигнала можно явно установить User экземпляра username как UserProfile подобласти. Напр.

def create_user_profile(sender, instance, **kwargs): 
    profile = UserProfile(user = instance, subdomain = instance.username, ...) 
    profile.save() 

Другой способ сделать это было бы переопределить save() метод таким образом, что, если не поддомен не поставляется вы можете установить его в user.username.

+0

Работает отлично, спасибо! –

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