我使用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。我怎么能这样做?
答案 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
。