Django Rest Framework:只需获取多对多关系的某些值

J.赫斯特

我正在使用 Django Rest Framework 来编写我的 API。我想将与 id(特别是 uuid)不同的值写入我的序列化程序。

先给大家介绍一下基本配置。我有一个名为Housepk 和 uuid 的模型。我有第二个模型Citizen,它也有一个 pk 和一个 uuid。House并且Citizen彼此之间存在多对多关系。

我想要一个序列化器,它只返回一个它的公民数组。

这是我尝试(但失败)的无效伪代码:

class HouseSerializer(serializers.ModelSerializer):
    address = AddressSerializer()
    citizen = serializers.UUIDField(source="citizen.uuid")

    class Meta:
        model = Table
        fields = [
            "uuid",
            "address",
            "citizen",
            ...
        ]

此序列化程序抛出错误:

AttributeError: Got AttributeError when attempting to get a value for field `citizen` on serializer `HouseListSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `House` instance.
Original exception text was: 'ManyRelatedManager' object has no attribute 'uuid'.

但是在我的模型上,House我已经明确地citizen = models.ManyToManyField(Citizen).

如果我只是不指定任何序列化程序而只是将 Citizen 留在 fields 数组中,我只会得到一个我无法使用的 PK 数组。

如何在此处获取 UUID 数组?

马塞尔·伊拉斯谟

首先,您的 Citizen 模型需要一个序列化程序类。

class CitizenSerializer(serializers.ModelSerializer):
    uuid = serializers.UUIDField(read_only=True)

    class Meta:
        model = Citizen
        fields = ('uuid', )

然后我们将添加CitizenSerializer到您的HouseSerializer. 请注意,我们需要关系many=True参数ManyToManyField

class HouseSerializer(serializers.ModelSerializer):
    address = AddressSerializer()
    citizen = CitizenSerializer(read_only=True, many=True)

    class Meta:
        ...

您可以在此处阅读有关此内容的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django Rest Framework实现多对多关系

来自分类Dev

django-rest-framework多对多关系。如果不存在则创建

来自分类Dev

Django Rest Framework中与用户相关的字段具有多对多关系

来自分类Dev

Django Rest Framework 获取一对多关系中的其他相关字段

来自分类Dev

Django Rest Framework:管理关系

来自分类Dev

Django Rest Framework嵌套关系

来自分类Dev

Django rest_framework关系

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

Django Rest Framework 3.0:保存嵌套的多对一关系

来自分类Dev

在django rest框架中保存与数据库有多对多关系的django模型

来自分类Dev

Django Rest框架关系

来自分类Dev

在Serializer Django:Rest Framework中获取外键关系的数据

来自分类Dev

Django Rest Framework and JSONField

来自分类Dev

Django Rest Framework API

来自分类Dev

Django Rest Framework的ModuleNotFoundError

来自分类Dev

Django以多对多关系获取相关对象

来自分类Dev

在Django Rest中使用中间模型序列化多对多关系

来自分类Dev

将新记录添加到 django rest 框架中的多对多关系

来自分类Dev

Django Rest Framework,使嵌套关系超链接

来自分类Dev

Django Rest Framework-OneToOne反向关系

来自分类Dev

Django Rest Framework中的关系条件检查

来自分类Dev

Django Rest Framework-嵌套关系平整

来自分类Dev

使用具有许多关系的Post方法的Django Rest-Framework错误

来自分类Dev

Django 多对多关系

来自分类Dev

Django Rest Serializer:反向关系

来自分类Dev

Restangular,Django REST和关系

来自分类Dev

Django Rest Framework图片上传并获取图片

来自分类Dev

Django Rest Framework URL模式

Related 相关文章

热门标签

归档