Django将同一模型的两个查询集串联在一起
作者:互联网
我有一个产品列表,每个产品属于不同的分销商.
我需要为每个产品及其对应的分销商显示一个表格.我可以使用以下代码进行操作:
form_products = ProductFormSet(
queryset = Product.objects.filter(product__id=product_id)
)
问题是我需要首先在页面中显示表单,该表单的产品属于名为“ FirstDistributor”的特定发行商.
我尝试使用|查询集之间的运算符:
form_products = ProductFormSet(
queryset=(
Product.objects.filter(
product__id=product_id,
distributor__name='FirstDistributor') |
Product.objects.filter(
product__id=product_id
).exclude(distributor__name='FirstDistributor')
)
)
但是,表单仍然以相同的顺序显示.如何在保持相同顺序的同时将这两个查询集串联在一起?
q1 = Product.objects.filter(product__id=product_id,
distributor__name='FirstDistributor')
和
q2 = Product.objects.filter(product__id=product_id
).exclude(distributor__name='FirstDistributor')
谢谢!
解决方法:
您可以尝试在此处进行操作:
https://stackoverflow.com/a/2176471/4971083
这是在Django中按特定值对记录进行排序的解决方案.
您可以通过distributor_name =’FirstDistributor’来订购记录
p= Product.objects.filter(product__id=product_id).extra(
select={'is_top': " distributor__name='FirstDistributor'"})
p = p.extra(order_by = ['-is_top'])
标签:python,django,django-queryset 来源: https://codeday.me/bug/20191011/1890068.html