我正在运行查询,但ordery_by不适用于布尔字段值。如有任何帮助,将不胜感激。多谢各位
models.py:
class ShopOffer(models.Model):
offer_title = models.CharField(max_length=120)
added_by = models.ForeignKey(ShopOwnerShopDetails, on_delete=models.CASCADE)
is_active = models.BooleanField(default=True)
views.py:
queryset = ShopOffer.objects.filter(added_by__user_id=user).order_by('-is_active')
将其更改如下,以将默认顺序false(0)更改为true(1)
在数据库中,布尔字段很可能存储为TINYINT(或其他整数类型)。这意味着数字
0
将表示False,数字1
将表示True。所以当你这样打ORM电话时:SQL查询包含以下部分:
这是什么意思。这意味着整数字段的降序。因此,数字越大,数字越小,排在第二位。因此
1
值(True)将排在第一位,0
值将排在第二位。所以True
将排在第一位,False
将排在第二位因此,如果您希望首先出现假值,您的查询应该如下所示:
但再一次,这完全取决于您使用的RDBMS。我建议检查
ShopOffer
表的DDL代码,以查看is_active
字段的类型更新1
https://i.stack.imgur.com/sx1g4.png
是MySQL
更新2
OP确认这是TINYINT油田
相关问题 更多 >
编程相关推荐