我有Products
的列表,每个列表都属于不同的Distributor
。
我需要为每个产品及其相应的经销商显示一份表格。我可以用这段代码完成:
form_products = ProductFormSet(
queryset = Product.objects.filter(product__id=product_id)
)
问题是我需要显示包含属于特定Distributor
名为" 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')
谢谢!
答案 0 :(得分:3)
你可以尝试这样做:
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'])
答案 1 :(得分:1)
您可以使用itertools将两者结合起来:
from itertools import chain
result_list = list(chain(page_list, article_list, post_list))