django - Django:“订购”基于布尔字段的查询集
问题描述
我想以Menù
这种方式获取所有实例:
- 在那些已my_boolean_field
设置为的实例的顶部位置True
-在最后位置那些已my_boolean_field
设置为的实例False
这是我的Menù
模型和我的查询:
class Menù(models.Model):
id_menù = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
my_boolean_field = models.BooleanField(default=False)
# In my View:
my_query_set = Menù.objects.all().order_by('my_boolean_field')
我也搜索了一个group_by
选项,但在 Django ORM 中没有找到任何内容
解决方案
您可以添加-
到 order_by
查询中以按降序排序,如下所示:
my_query_set = Menù.objects.all().order_by('-my_boolean_field') # first get True ones then get False ones
另一种方法是像这样添加ordering
到您的模型Meta
类中:
class Menù(models.Model):
id_menù = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
my_boolean_field = models.BooleanField(default=False)
class Meta:
ordering = ('-my_boolean_field ',)
在此更改后,您的查询my_boolean_field
将默认按降序排序,无需使用order_by('-my_boolean_field')
:
my_query_set = Menù.objects.all() # results will be sorted by my_boolean_field in reverse order
推荐阅读
- r - 错误:出现意外符号:R 错误消息
- datastax - 如何在 DataStax 版本 5.1.7 上启用 spark-sql?
- python - 如何将任务分配给特定的 CPU 内核?
- paypal - PayPal IPN 验证回传到 HTTPS
- azure-active-directory - 客户端凭据流身份验证是否支持 Azure AD 条件访问?
- typescript - RequireJS 在 Typescript 中定义 Murri
- stripe-payments - 将信息传递给 Stripe 结账(或元素)
- javascript - 双击在 IOS 上为 iFrame 建立工作链接
- r - Tibble/Data_frame 不使用 mutate_if() 进行舍入
- javascript - Javascript setCookie 函数不适用于复选框值