在 Django 中,在查询集上使用 fiter() 然后 get() ?
我可以在查询集上结合使用 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,但收到一条错误消息,表明该对象不存在。我是否错误地处理了这个问题,或者我的语法是否在某个地方出现了问题?谢谢
Can I combine the use of filter() and get() on querysets to return an object in a django view?
I have the following view;
def my_view(request, city, store, item):
item = Item.objects.filter(store__city=city, city=city).get(item=item)
Items are all unique for city and store. I am currently trying to filter a queryset based on the two ForeignKey fields and then use get on a CharField but am getting an error message that the object does not exist. Am I approaching this incorrectly or is my syntax off somewhere? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的相关过滤器仅返回 1 个结果,那么您可以使用 :
过滤 Item 记录并将它们存储在具有类似列表结构的 QuerySet 中,然后取出第一个元素...
如果您确定得到结果,那么您可以使用 get 而不是 filter:
但是如果不存在符合您的过滤器条件的记录,则会出现错误。因此,如果您不确定过滤是否会返回结果,请使用:
它会检查结果查询集并获取第一个结果(如果存在)。
If your related filter returns only 1 result, then you can use :
which filters the Item records and store them in a QuerySet, which has a list-lilke structure, then take the first element...
If you are sure to get a result, then you can use get instead of filter:
But if there exists no record which fits your filer criteria, then you get an error. So if you are not sure whether filtering will return a result or not, then use:
which ckecks the resulting queryset and takes the first result if exists any.