我可以在查询集上结合使用filter()和get()来返回django视图中的对象吗? 我有以下观点;
def my_view(request, city, store, item):
item = Item.objects.filter(store__city=city, city=city).get(item=item)
项目对于城市和商店都是独一无二的。我目前正在尝试根据两个ForeignKey字段过滤一个查询集,然后在CharField上使用get但是收到一条错误消息,指出该对象不存在。我接近这个错误还是我的语法在某处?感谢
答案 0 :(得分:1)
如果您的相关过滤器仅返回1个结果,则可以使用:
def my_view(request, city, store, item):
item = Item.objects.filter(store__city=city, city=city)[0]
过滤Item记录并将它们存储在QuerySet中,该QuerySet具有list-lilke结构,然后取第一个元素......
如果您确定要获得结果,那么您可以使用get而不是filter:
item = Item.objects.get(store__city=city, city=city)
但如果没有符合您的文件管理器条件的记录,那么您会收到错误消息。因此,如果您不确定过滤是否会返回结果,请使用:
item = Item.objects.filter(store__city=city, city=city)
if item:
item = item[0]
它会阻塞生成的查询集,并在存在任何结果时获取第一个结果。