从User instance字段将默认值设置为UserProfile model字段

时间:2010-09-24 10:36:04

标签: django django-models

我使用UserProfile模型来保存有关用户的其他信息,其中一个字段是子域变量,默认情况下应设置为username。这是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模型实例。现在我需要将子域变量设置为username。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

由于您使用信号自动创建UserProfile,因此您可以明确将User实例的username设置为UserProfile子域。例如,

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

另一种方法是覆盖save()方法,这样如果没有提供子域,则可以将其设置为user.username