我已经两个模型这样定义:具有多个查找的Django RestFramework方法滤波器
class House(models.Model):
# all the fields here
def capacity(self):
capacity = 0
for room in self.rooms.all():
capacity += room.capacity
return capacity
class Room(models.Model):
house = models.ForeignKey(
House,
on_delete=models.CASCADE,
related_name='rooms'
)
capacity = models.PositiveIntegerField(
default=1
)
我需要的是过滤使用所有号码查找(LT,LTE,GT,GTE通过其容量的房屋,范围,完全)在restframework,我这样做:
import rest_framework_filters as filters
def capacity_filter(qs, name, value):
# filter implementation here
class HouseFilter(filters.FilterSet):
capacity = filters.NumberFilter(
method=capacity_filter
)
class Meta:
fields = ('capacity',)
class HouseViewSet(viewsets.ModelViewSet):
filter_class = HouseFilter
# other attrs here
和它的作品,但仅适用于精确值,我使用__gt不能过滤器,或__lt,我试图与lookup_expr parametter在NumberFilter但不起作用。
我尝试过,但与方法的参数是不行的,它提出这个异常: “Meta.fields”包含未在此FilterSet定义字段:容量 – Carlos