django - queryset 在 Django 中传递 null
问题描述
我正在 django 上构建我的第一个 ecom,我在 DetailsView 上有一个带有类别字段的项目模型,我想显示与特定项目相关的项目,因为我尝试了这个。
class ItemDetailView(DetailView):
model = Item
template_name = "product.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
related_items = Item.objects.filter(category=Item.category).order_by('category')
context['related_items'] = related_items
print(related_items)
return context
但这不起作用它打印:
<QuerySet []>
有人可以告诉我做错了什么。
解决方案
您应该决定要查找的类别。例如:
related_items = Item.objects.filter(category_id=1).order_by('category')
或者
category = Category.objects.first()
related_items = Item.objects.filter(category=category).order_by('category')
所以它必须是类别类型对象或与类别ID相关。显示相关项目的一种常用方法是:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
related_items = Item.objects.filter(category=self.get_object().category).order_by('category')
context['related_items'] = related_items
print(related_items)
return contex
如果您想从相关项目中排除当前项目,您可以执行以下操作:
def get_context_data(self, **kwargs):
item = self.get_object()
context = super().get_context_data(**kwargs)
related_items = Item.objects.filter(category=item.category).exclude(id=item.id).order_by('category')
context['related_items'] = related_items
print(related_items)
return contex
推荐阅读
- database - 如何在 Firebase Flutter 应用程序中存储会话
- javascript - 我如何等待子组件使用 React 钩子“准备好”?
- sql - SQL Server 查询基于已被排除的库存位置的重复行
- ios - 如何将 UIButton 默认设置为 OFF?
- mysql - 选择多个关系值
- c++ - 多态性 - 指向类程序无法编译
- c - 与外部传递数据的错误值
- python - 当您的脚本使用批处理文件时 Python 到 Exe
- c# - c#当javascript版本为201时httpclient返回400错误
- android - database.execSQL(sql) 方法使我的模拟器崩溃