【发布时间】:2018-10-09 05:57:41
【问题描述】:
我有这个模型:
class Auction(models.Model):
start_price = models.IntegerField()
price_step = models.IntegerField()
finish_time = models.DateTimeField()
@property
def is_active(self):
return self.finish_time > timezone.now()
我的序列化程序类中也有这个:
class AuctionSerializer(serializers.ModelSerializer):
is_active = serializers.ReadOnlyField()
class Meta:
model = Auction
fields = '__all__'
这在我的视图类中:
class AuctionViewSet(ModelViewSet):
queryset = Auction.objects.all()
serializer_class = AuctionSerializer
filter_backends = (DjangoFilterBackend,)
filter_fields = ('is_active',)
但它会抛出“'Meta.fields' 包含未在此 FilterSet 上定义的字段:is_active”。我可以将它用作序列化器字段,但我不能按此字段进行过滤。如何正确实现模型属性过滤,而不仅仅是模型字段?
【问题讨论】:
-
这是不同的。我已经在序列化器中放入了 is_active,我需要通过这个字段过滤视图。
标签: django django-rest-framework