Django QuerySet查询或过滤特定字段中的"奇数"和/或"偶数"值

Yeo*_*Yeo 2 python django django-queryset python-3.x

# Example
from django.db import models

class ParkingLot(models.Model):
    lot_number = models.IntegerField()
    is_reserved = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

我对Odd xor Even感兴趣lot_number.在Django中过滤它的推荐方法是什么?

我在下面发布了一些答案.


挑战

有谁知道我们是否可以使用类似F('lot_number') % 2 == 0技术的直接比较?

jpr*_*itt 11

在Django> 1.8中,您可以使用F()表达式:

# ParkingLots with even numbered lot_numbers
ParkingLot.objects.annotate(odd=F('lot_number') % 2).filter(odd=False)  

# ParkingLots with odd numbered lot_numbers
ParkingLot.objects.annotate(odd=F('lot_number') % 2).filter(odd=True)  
Run Code Online (Sandbox Code Playgroud)

但这在旧版本的Django中不起作用.