gpt4 book ai didi

python - Django 过滤外键字段

转载 作者:行者123 更新时间:2023-11-30 21:50:15 24 4
gpt4 key购买 nike

简短版本:

我有一个用于食谱的 Django 应用程序,并且想要过滤要发送到我的 View 中的模板的数据。我基本上希望特定用户添加的所有收据都作为上下文发送。以下过滤返回错误消息以 10 为基数的 int() 的无效文字: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}}" 的 View ,其中 View 如下所示:

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__added_by__added_by = uname,但Django随后返回一个错误,指出“无法将关键字'recipe'解析为字段”,这似乎很明显。我的网址是:

url(r'^profile/([a-zA-Z0-9]+)/$', 'profile', name='*app_name*-profile'),

感谢您的回复。抱歉,如果这应该是显而易见的。

[1] Django models filter by foreignkey

最佳答案

你可以尝试这样:

 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

关于python - Django 过滤外键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24547532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com