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