Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 包含相关模型中的单个字段_Django_Django Rest Framework - Fatal编程技术网

Django 包含相关模型中的单个字段

Django 包含相关模型中的单个字段,django,django-rest-framework,Django,Django Rest Framework,所以,我有一个组织模型,我使用UserExtension模型来扩展标准用户模型。UserExtension为组织提供外键 我想在用户API中公开来自组织的单个字段。示例用户看起来有点像这样 { “用户名”:“测试”, “组织编号”:“4AD6636C-8DC6-49BA-908C-4099C7DB0B81”, …一堆其他领域。。。 } 我希望能够将其传递给创建/更新API,以便设置/更改用户所属的组织。我知道我可以重写为_representation()和_internal _value()

所以,我有一个组织模型,我使用UserExtension模型来扩展标准用户模型。UserExtension为组织提供外键

我想在用户API中公开来自组织的单个字段。示例用户看起来有点像这样


{
“用户名”:“测试”,
“组织编号”:“4AD6636C-8DC6-49BA-908C-4099C7DB0B81”,
…一堆其他领域。。。
}


我希望能够将其传递给创建/更新API,以便设置/更改用户所属的组织。我知道我可以重写为_representation()和_internal _value(),但对于这样的东西来说,这似乎是一种过分的做法。如何包含相关模型中的单个字段?

在用户序列化程序中,您可以添加组织序列化程序并修改to_表示方法以获得所需格式。

您可以在
用户扩展序列化程序中添加一个
组织uuid
字段,在
参数中添加一个,我们将使用点符号遍历相关
组织
对象中的
组织
属性

class UserExtensionSerializer(serializers.ModelSerializer):

    org_uuid = serializers.UUIDField(source='organisation.org_uuid') # define the field 
在序列化的情况下,对象的序列化表示将包含一个键
org\u uuid
,该键将包含相应
organization
对象的
org\u uuid
属性的值

class UserExtensionSerializer(serializers.ModelSerializer):

    org_uuid = serializers.UUIDField(source='organisation.org_uuid') # define the field 

在创建/更新的情况下,您可以访问
序列化程序中的
org\u uuid
值。验证的\u数据

您想在UserExtension序列化程序中添加organizer字段还是将username字段添加到organizer序列化程序中?两者都不想。我是一个用户序列化程序,拥有与UserExtension中的字段相对应的org_id字段。在常规的django模型语法中,我将使用user\uuuu userextension\uuuuu org\uuuuuid。覆盖到\u表示似乎有点过分了。此外,我不只是想要一些组织,我想要一个与这个用户对应的特定组织。然后可能会覆盖视图,从序列化程序获取数据,并用您需要的任何数据更新数据字典。谢谢,这正是我要找的。在我的例子中,它是
org\u uuid=serializers.UUIDField(source='userextension.org.uuid')