[英]How to access other model fields through foreign key in Django Views
[英]How to access data in filter parameter through a foreign key in Django?
我有两个模型:用户(由Django预定义)和通过外键连接的UserProfile。
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name="connect")
location = models.CharField(max_length=20, choices=LOCATION_CHOICES)
gender = models.CharField(max_length=20, choices=GENDER_CHOICES)
User模型包含username,first_name,last_name和password等字段。
在我看来,我想使用位于用户对象中的用户名字段找到UserProfile对象。 要使用用户名字段过滤/获取UserProfile对象,我需要通过外键“旅行”以访问用户模型。
但是,我在尝试这样做时遇到了一些错误。 有谁知道我怎么做到这一点?
这是我到目前为止:
def edit(request):
#the line below is where I am facing troubles.
#The error I'm getting is SyntaxError: keyword can't be an expression
user = UserProfile.objects.filter(user.username=request.user.username)
form1 = UserEditForm()
form2 = UserProfileEditForm()
c = RequestContext(request, {
'action': 'update/',
'button': 'Update',
'form1': form1,
'form2': form2,
})
return render_to_response('registration/user_profile.html', c)
有谁知道如何解决这个问题? 谢谢!
使用双下划线( __
)来遍历关系。 例如:
user = UserProfile.objects.filter(user__username=request.user.username)
但是,在您的情况下,您不需要这样做。 request.user
是一个User
对象,所以要得到他们的UserProfile
:
user = request.user.get_profile()
甚至:
UserProfile.objects.get(user=request.user)
请注意,您的第一个示例应返回带有1个结果的QuerySet
,而第二个示例返回单个对象。 换一种说法:
request.user.get_profile() ==
UserProfile.objects.filter(user__username=request.user.username)[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.