Django 从用户实例字段将默认值设置为UserProfile模型字段

Django 从用户实例字段将默认值设置为UserProfile模型字段,django,django-models,Django,Django Models,我使用UserProfile模型来保存关于用户的其他信息,其中一个字段是subdomain变量,默认情况下应该设置为username。以下是UserProfile模型: class UserProfile(models.Model): theme = models.ForeignKey(Theme, unique=True, null=True) user = models.ForeignKey(User, unique=True) subdomain = models.

我使用UserProfile模型来保存关于用户的其他信息,其中一个字段是subdomain变量,默认情况下应该设置为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。如何执行此操作?

由于您使用信号自动创建
用户配置文件
,因此可以显式地将
用户
实例的
用户名
设置为
用户配置文件
子域。例如

def create_user_profile(sender, instance, **kwargs):
    profile = UserProfile(user = instance, subdomain = instance.username, ...)
    profile.save()
另一种方法是重写
save()
方法,这样如果没有提供子域,您可以将其设置为
user.username