其他分享
首页 > 其他分享> > Django将同一模型的两个查询集串联在一起

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