从模型实例中过滤多对多集合

我有一个带有标签的产品模型,标签可以使用多种语言。当我得到该产品的实例时,我有一个product.tags经理。

我想知道是否有一种方法可以过滤连接到产品实例的标签,当我将其传递给 serializer 时,我只会得到标签带有序列化器输出的单一语言。

class Product(models.Model):
   ...
   tags = models.ManyToManyField(Tag)
   ...


class Tag(models.Model)
   text = models.CharField(max_length=32)
   language = models.CharField(max_length=2)


class ProductSerializer(serializer.ModelSerializer):
   tags = TagSerializer(many=True)
   ...

我能够手动过滤它们,然后将它们添加到数据响应中,如下所示:

tags_query = product.tags.filter(language=lang)
tag_serializer = TagSerializer(lang,many=True) 

但是我想知道这是否可以通过序列化器完成?

kakasned 回答:从模型实例中过滤多对多集合

不,您不能通过序列化器来做到这一点。 您可以这样:

tags_query = product.tags.filter(language=lang)
tag_serializer = TagSerializer(tags_query,many=True) 
本文链接:https://www.f2er.com/3121805.html

大家都在问