我正在尝试为个人资料信息创建模型。我想在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',
)
答案 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