我有一个名为Profile的表,代码如下:
class Profile(models.Model):
user = models.OneToOneField('auth_user',
related_name='profile', verbose_name='profile', on_delete=models.CASCADE)
name = models.CharField(max_length=30, verbose_name='name')
family = models.CharField(max_length=50, verbose_name='family')
,User表如下所示:
class User(models.Model):
id = models.IntegerField(primary_key=True)
username = models.CharField(max_lenght=255)
password = models.CharField(max_lenght=255)
我想通过此功能获取包含用户名的个人资料:
def get_profile(request, username):
# some codes
如何获取用户名的个人资料? 我应该在get_profile函数中写什么? 坦
答案 0 :(得分:0)
您可以使用get()
查询:
def get_profile(request, username=None):
profile = Profile.objects.get(user__username=username)
但如果没有这样的用户,这可能会导致错误。因此,更好的方法是使用shortcuts.get_object_or_404()
:
from django.shortcuts import get_object_or_404
def get_profile(request, username=None):
profile = get_object_or_404(Profile, user__username=username)
如果您对双下划线语法(user__username=username
)感到困惑,请检查the docs for field lookups。