Django REST Framework - 对嵌套序列化程序的查询限制?

标签 django serialization django-rest-framework

我有一种情况,其中一个表通过外键与另一个表相关,如下所示:

模型.py

class Container(models.Model):
    size  = models.CharField(max_length=20)
    shape = models.CharField(max_length=20)

class Item(models.Model):
    container = models.ForeignKey(Container, related_name='items')
    name  = models.CharField(max_length=20)
    color = models.CharField(max_length=20)

序列化程序.py
class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item


class ContainerSerializer(serializers.ModelSerializer):
    items = ItemSerializer(many=True)

    class Meta:
        model = Container
        fields = ('size', 'shape', 'items')

这工作正常,但我的问题是容器中的所有项目都被序列化。我只希望 color='green' 的项目被序列化。

最佳答案

class ContainerSerializer(serializers.ModelSerializer):
    items = serializers.SerializerMethodField()

    def get_items(self, obj):
        query = Item.objects.filter(item_set__color='green')
        serializer = ItemSerializer(query, many=True)
        return serializer.data

    class Meta:
        model = Container
        fields = ('size', 'shape', 'items')

关于Django REST Framework - 对嵌套序列化程序的查询限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293764/

相关文章:

java - 使用 Jackson 解析 json 中的 boolean 值时的额外数据

Django,从带注释的最大值中选择一个最大值(几个字段中的最大值)

python - 运行 for 循环获取图像时不显示图像

Django REST框架: create JSON fragments from string

view - django rest 框架 - 添加到 views.obtain_auth_token

django - 嵌套序列化程序中的当前用户

python - 更改 `wsgi.py` 后,Django-Rest-Framework 无法加载样式和脚本

python - Django:如何使用过滤的 ForeignKey 字段的计数来注释查询集?

Django-AttributeError 'User' 对象没有属性 'backend'(但是……有吗?)

Python Pickle Dump 'Wb' 参数