在用户对象(Django)中定义用户名的默认url

在用户对象(Django)中定义用户名的默认url,django,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_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',
    )

您可以编写一个create方法,如django文档()中所述

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

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

您已经可以通过
OneToOneField
访问
User
对象,那么为什么要从那里获取
username
,并将
default\u 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)
然后您可以访问url,如下所示:

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

如何在我的UserProfile类中访问它?与模型上的任何其他变量一样
self.default\u url
profile = UserProfile.objects.get(user_id=1)
default_url = profile.default_url