嵌套Django Q对象以过滤关系

2024-09-30 01:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Django 2.0,并从要存储在数据库中的用户输入生成一个相当复杂的过滤器。你知道吗

假设我有以下模型:

class Car(models.Model):
    brand = models.CharField(...)
    doors = models.PositiveIntegerField(...)

class Tire(models.Model):
    car = models.ForeignKey(Car, related_name="tires")
    radius = models.FloatField(...)
    color = models.CharField(...)

我现在想在评估或设置任何查询集之前为CarTire创建筛选器,即,我只想要完整的Q()对象:

my_filter = Q(brand__startswith='Volks') & Q(doors=4)
my_tire_filter = Q(radius__range=(1.0, 2.0) & Q(color=black))

我现在怎样才能Car模型创建另一个Q对象,给我满足my_filter和轮胎满足my_tire_filter的汽车?像这样的

my_car_filter = my_filter & Q(tires=my_tire_filter)
the_cars = Car.objects.get(my_car_filter)

我想将这些Q()对象存储在数据库中,这就是为什么我需要没有任何数据集的纯Q过滤器。有可能吗?你知道吗


Tags: 对象模型数据库过滤器modelmodelsmyfilter

热门问题