在用户对象中定义用户名的default_url(Django)

时间:2016-06-27 13:42:57

标签: django

我正在尝试为个人资料信息创建模型。我想在default_url中使用该用户的用户名设置默认值。我怎么能这样做?

class UserProfile(models.Model):
    user = models.OneToOneField('auth.User')
    default_url = 'https://' + 'get_user_name_here' + '.' + settings.NETWORK_DOMAIN
    site_url = models.URLField(
        default=default_url,
        verbose_name='Site URL',
    )

2 个答案:

答案 0 :(得分:0)

您可以按照django docs(https://docs.djangoproject.com/en/1.9/ref/models/instances/

中的描述编写创建方法
@classmethod
def create(cls, user, other_attributes):
    user_profile = cls(url='https://'+user)
    # do something with the book
    return user_profile

然后,要创建UserProfile,只需调用您的方法:

user_profile = UserProfile.create("a_username", etc., ...)

答案 1 :(得分:0)

您已经可以通过User访问OneToOneField对象了,那么为什么要从那里获取username并将default_url改为财产呢?

class UserProfile(models.Model):
    user = models.OneToOneField('auth.User')
    site_url = models.URLField(
        default=default_url,
        verbose_name='Site URL',
    )

    @property
    def default_url(self):
        return 'https://{}.{}'.format(self.user.username, settings.NETWORK_DOMAIN)

然后您可以像这样访问网址:

profile = UserProfile.objects.get(user_id=1)
default_url = profile.default_url