【发布时间】:2014-08-24 05:07:01
【问题描述】:
短版:
我有一个用于食谱的 Django 应用程序,并且想要过滤要发送到我视图中的模板的数据。我基本上希望将特定用户添加的所有接收作为上下文发送。以下过滤返回错误消息invalid literal for int() with base 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)
不确定我错过了什么,但据我所知,这似乎与 added_by 具有用户的外键这一事实有关。我还尝试根据 [1] 将过滤器参数更改为 recipe__add_by__add_by = uname,但 Django 随后返回错误消息“无法将关键字'recipe'解析为字段”,这似乎很明显。我的网址是:
url(r'^profile/([a-zA-Z0-9]+)/$', 'profile', name='*app_name*-profile'),
感谢您的回复。对不起,如果这应该很明显。
【问题讨论】:
-
你的 recipe.added_by 用户和登录用户一样吗?
标签: python django filter foreign-keys