Как заставить выбор работать с REST-фреймворком Django
У меня есть модель:
class Film(models.Model):
title = models.CharField(max_length=250)
starring = models.CharField(max_length=250)
description = models.CharField(max_length=500)
rating = models.CharField(max_length=2, choices=(('1','U'),('2','PG'),('3','12A'),('4','12'),('5','15'),('6','18')),default='18')
length = models.IntegerField()
def __str__(self):
return f"{self.title}, {self.rating}"
и сериализатор:
class FilmSerializer(serializers.ModelSerializer):
class Meta:
model = Film
fields = ('title','description','starring','rating','length')
def to_representation(self, instance):
data = super().to_representation(instance)
hours = math.floor(int(data['length']) / 60)
minutes = int(data['length']) % 60
data['length'] = f"{hours}h {minutes}m"
return data
и представление api:
class FilmList(ListAPIView):
queryset = Film.objects.all()
serializer_class = FilmSerializer
filter_backends = (DjangoFilterBackend,)
filterset_fields = ('rating',)
Когда я использую Django Rest, я могу фильтровать по рейтингу, но только если я удалю определение choices из модели. Когда определение выбора присутствует на "рейтинге", фильтр вообще ничего не возвращает.
Я хотел бы использовать это для фильтрации по "рейтингу". Есть ли способ обойти это? спасибо