python - 如何限制每个字段在 django 查询集中返回的字段
问题描述
我有一排产品,它们倾向于共享一些信息,例如相同的图像(一张图像可能显示多个产品)、描述、制造商等。
我想选择一些字段只显示一次信息。我不能为此使用 distinct(我不认为),因为信息并不总是相同的,例如描述,但可能只是细微的不同,以至于我不想重复它。
目前,我正在使用 for 循环来显示每个结果中的字段,最终结果如下:
这是我在我看来使用的代码:
def collection_detail(request, name=None):
template = loader.get_template('/webapps/mywebapp/furniture/main_page/templates/main_page/detail.html')
products = product.objects.filter(id=name)
cart_product_form = CartAddProductForm()
context={'products': products,
'cart_product_form': cart_product_form}
return HttpResponse(template.render(context))
在视图中执行此操作的适当方法是什么,忽略某些字段的后续行?
编辑:示例查询集结果
collection_name|manufacturer|product_type|description|image_url
----------------------------------------------------------------
Testing |FakeCo |Bed |pretty nice|/img/1.jpg
Testing |FakeCo |Desk |pretty bad |/img/2.jpg
Testing |FakeCo |Nightstand |pretty ok |/img/1.jpg
Testing |FakeCo |Draws |pretty nice|/img/3.jpg
在上述数据的示例中,我只想显示一次集合名称和制造商,所以第一个结果就可以了,每个产品类型,第一个描述,不管它说什么,每个图像都是不同的而不是重复的.
解决方案
这样
products = product.objects.filter(id=name)
它将返回一个查询集,这意味着它包含多个产品信息。如果您只想获取单个对象信息,请更改查询,如下所示:
products = product.objects.filter(id=name).first()
or,
products = product.objects.filter(id=name)[:1]
更新 如果你想显示一些字段一个值然后使用这个:
{{ value|first }}
推荐阅读
- c# - 循环遍历 C# 列表中的未知数量的列表
- bash - 未能执行“bash”:bash:./instance_status.sh:没有这样的文件或目录
- c# - 我怎样才能得到真正的价值?
- codeigniter-3 - CodeIgniter 3 上的查询未在第一个循环中返回结果
- python - 自动 arima 为无错误的有效输入抛出 NaN 或无穷大错误
- php - 第一个表中某个列中的值等于另一个表中的列值要显示该特定表中的数据行
- tensorflow - 在 TensorFlow 层中重新缩放图像
- swift - PPS 号码验证 iOS Swift
- python - 由于 cv2,无法使用 cx_freeze 部署 python 程序
- ethereum - 带有 EIP712 的坚固标志