简洁版本:
我有一个用于食谱的Django应用,并且想过滤要发送到模板的数据。我基本上希望将特定用户添加的所有收据作为上下文发送。以下过滤为int()返回以10为底的错误消息无效文字:my_username。
recipes = Recipe.objects.filter(added_by = uname)
变量uname从模板传递。另一方面,对request.user进行过滤可以正常工作,但不是我想要的。
recipes = Recipe.objects.filter(added_by = request.user)
细节:
我的模型(相关字段)为:
class Recipe (models.Model):
...
...
added_by = models.ForeignKey(User)
其中User是现有的Django用户。当我在模板中调用{{recipe.added_by}}时,将获得所需的用户名。该用户名将传递给具有href =“ / profile / {{recipe.added_by}}”的视图,该视图如下所示:
def profile(request, uname):
print uname #Correct username printed
print request.user #Logged in user (not relevant, as userprofile should be visible for all)
recipes = Recipe.objects.filter(added_by = uname) #Does not work. Why?
#recipes = Recipe.objects.filter(added_by = request.user)
form = CommentForm(request.POST)
context = {
'uname': uname,
'recipes': recipes,
'form': form,
}
return render(request, '*app_name*/profile.html', context)
不确定我缺少什么,但是据我所知,这似乎与add_by具有用户外键有关。我也尝试根据[1]将过滤器参数更改为recipe__added_by__added_by = uname,但是Django随后返回了一个错误,提示“无法将关键字'recipe'解析为字段”,这似乎很明显。我的网址是:
url(r'^profile/([a-zA-Z0-9]+)/$', 'profile', name='*app_name*-profile'),
感谢您的答复。抱歉,这应该很明显。
[1] Django模型按外键过滤
您可以尝试:
recipes = Recipe.objects.filter(added_by__username = uname)
并request.user
可以正常工作,Recipe.objects.filter(added_by = request.user)
因为它request.user
是一个对象。详细信息:https : //docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句