【发布时间】:2021-10-23 16:04:15
【问题描述】:
我有一些通过外键连接的 Django (3.1) 模型
class Drone(models.Model):
serial = models.CharField(max_length=200, null=False, unique=True)
class Dive(models.Model):
measurement_time = models.DateTimeField(db_index=True)
drone = models.ForeignKey(
Drone,
on_delete=models.PROTECT,
null=True,
)
class Density(models.Model):
measurement_time = models.DateTimeField(db_index=True)
depth = models.IntegerField()
density = models.FloatField(null=True)
dive = models.ForeignKey(
Dive,
on_delete=models.PROTECT,
db_index=True,
null=True,
)
我的 API 有一个 Tastypie (0.14.3) ModelResource 类,定义如下
class DensityResource(ModelResource):
class Meta:
queryset = Density.objects.filter(dive__drone_id=13).order_by('-measurement_time', 'depth')
正如我对单曲 dive__drone_id 所期望的那样。我想实现获取参数过滤,所以我可以做类似/?order_by=-measurement_time&order_by=depth&dive__drone_id=13
所以我把这个类改写为
class DensityResource(ModelResource):
class Meta:
queryset = Density.objects.all()
filtering = {
'dive__drone_id': ALL
}
ordering = ['measurement_time', 'depth']
排序工作正常,但过滤不正常。我在这里错过了什么?
【问题讨论】: