问题
我正在使用django-filter包来过滤我的搜索结果。假设我的模型如下所示:
class Material(models.Model):
name = models.CharField(...)
class Test1(models.Model):
id
materialTested = models.ForeignKey(...)
TestResult = models.DecimalField(...)
class Test2(models.Model):
id
materialTested = models.ForeignKey(...)
TestResult = models.DecimalField(...)
我正在尝试使用来自Test1和Test2的结果来使用包过滤。测试是他们自己的模型的原因是因为相同的测试(或没有)的倍数可以为相同的材料运行
当前进度 我目前已将其设置为通过定义以下过滤器使用单个测试进行过滤:
class Filter1(django_filters.FilterSet):
class Meta:
model = Test1
fields = {'TestResult':['gte','lte']}
目标
目标是能够使用两个测试的结果进行过滤(将材料返回到列表中)。例如,Meta
的字段部分如下所示:
fields={'TestResult':['gte','lte'], 'TestResult__fromTest2':['gte','lte']}
我知道这不起作用,因为Test2
在任何地方都没有提及,我很确定过滤器的第二部分没有正确写入。任何帮助表示赞赏!
答案 0 :(得分:0)
如果有人感兴趣的话,我在当天晚些时候找到了答案。
正确的语法是使用Material
模型创建过滤器,例如:
class MaterialFilter(django_filters.FilterSet):
....
并在过滤器Meta
中使用:
fields={'test1__TestResult':['methods','here'], 'test2__TestResult':['methods','here']}