【问题标题】:Set default value to UserProfile model field from User instance field将默认值设置为用户实例字段中的 UserProfile 模型字段
【发布时间】:2010-09-24 10:36:03
【问题描述】:

我使用 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 模型实例。现在我需要将子域变量设置为用户名。我该怎么做?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多