ken*_*nha 3 python django foreign-keys filter
精简版:
我有一个用于食谱的 Django 应用程序,并且想要过滤要发送到我视图中的模板的数据。我基本上希望由特定用户添加的所有接收作为上下文发送。下面的过滤返回一条错误消息invalid literal for int() with base 10: my_username。
recipes = Recipe.objects.filter(added_by = uname)
Run Code Online (Sandbox Code Playgroud)
变量uname是从模板传递过来的。另一方面,过滤request.user工作正常,但不是我想要的。
recipes = Recipe.objects.filter(added_by = request.user)
Run Code Online (Sandbox Code Playgroud)
细节:
我的模型给出(相关字段)为:
class Recipe (models.Model):
...
...
added_by = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
其中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)
Run Code Online (Sandbox Code Playgroud)
不确定我缺少什么,但据我所知,这似乎与added_by具有用户的外键这一事实有关。我还尝试根据 [1]将过滤器参数更改为recipe__ added_by__ added_by = uname,但 Django 然后返回一个错误,提示“无法将关键字 'recipe' 解析到字段中”,这似乎很明显。我的网址是:
url(r'^profile/([a-zA-Z0-9]+)/$', 'profile', name='*app_name*-profile'),
Run Code Online (Sandbox Code Playgroud)
感谢您的任何答复。对不起,如果这应该是显而易见的。
[1] Django 模型按外键过滤
你可以尝试像:
recipes = Recipe.objects.filter(added_by__username = uname)
Run Code Online (Sandbox Code Playgroud)
并且request.user工作正常,Recipe.objects.filter(added_by = request.user)因为request.user是一个对象。详情:https : //docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships
| 归档时间: |
|
| 查看次数: |
10042 次 |
| 最近记录: |