我有一个Products列表,每个都属于不同的Distributor
我需要为每一种产品及其相应的经销商展示一张表格我可以用这个代码:

form_products = ProductFormSet(
    queryset = Product.objects.filter(product__id=product_id)
)

问题是,我需要在页面中首先显示表单,其中包含属于名为“firstdistributor”的特定Distributor的产品。
我试图通过在querysets之间使用|运算符执行以下代码:
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'])

07-26 00:41