Django rest framework - фильтрация для поля сериализатора

У меня есть вопрос о Django REST-полной структуре.

Когда продукты передаются удаленному клиенту, каждый продукт берет файл с отфильтрованными данными.

Например, модель может быть такой.

 class Product(models.Model):
      name = models.CharField()

 class Like(models.Model):
      product = models.ForeignKey(Product, related_name="likes")

На клиенте каждый нравится продукта, считанного с истинным значением, а не false.

Итак, я попробовал с кодом ниже в сериализаторе.

class ProductSerializer(serializers.ModelSerializer):

    likes = serializers.PrimaryKeyRelatedField(many=True, queryset=Like.objects.filter(whether_like=True))

    class Meta:
        model = Product
        fields = ('id', 'name', 'likes')

Но это не работает, как я хотел.

Что мне делать?

Ниже приведен дополнительный код просмотра.

@api_view(['GET'])
def product_list(request, user_id, format=None):

    if request.method == 'GET':
        products = Product.objects.all()
        serializer = ProductSerializer(products, many=True)

        return Response(serializer.data)

Ответы

Ответ 1

Как насчет чего-то вроде этого:

class ProductSerializer(serializers.ModelSerializer):
    likes = serializers.SerializerMethodField('get_likes')

    def get_likes(self, product):
        qs = Like.objects.filter(whether_like=True, product=product)
        serializer = LikeSerializer(instance=qs, many=True)
        return serializer.data

    class Meta:
        model = Product
        fields = ('id', 'name', 'likes')

** LikeSerializer опущен для краткости. Надеюсь это поможет.