如何在序列化程序 django rest 框架中为外键设置源

Posted

技术标签:

【中文标题】如何在序列化程序 django rest 框架中为外键设置源【英文标题】:how to set source for for a foreign key in serializer django rest frame work 【发布时间】:2020-09-14 06:02:03 【问题描述】:

我的模型如下:

class UserWorkspace(models.Model):
    workspace = models.ForeignKey(
        "Workspace", models.CASCADE, db_column="workspace_uuid"
    )
    user = models.ForeignKey("User", models.CASCADE, db_column="user_uuid")

我需要在我尝试过的序列化程序中更改名称:

class UserWorkspaceSerializer(serializers.ModelSerializer):
    workspace_uuid = serializers.PrimaryKeyRelatedField(source="workspace", queryset=Workspace.objects.all())
    user_uuid = serializers.PrimaryKeyRelatedField(source="user", queryset=User.objects.all())

    class Meta:
        model = UserWorkspace
        fields = ("workspace_uuid", "user_uuid")

但我得到了错误

    return self.fields[key]
KeyError: 'workspace'

【问题讨论】:

【参考方案1】:

像这样改变你的代码

workspace = serializers.PrimaryKeyRelatedField(source="workspace_uuid", queryset=Workspace.objects.all())
user = serializers.PrimaryKeyRelatedField(source="user_uuid", queryset=User.objects.all())

Source Documentation

【讨论】:

这不起作用这与删除这两行没有什么不同

以上是关于如何在序列化程序 django rest 框架中为外键设置源的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django Rest Framework 的 REST API 中为数组数据编写序列化程序?

如何在rest框架中为我的注册视图编写登录视图?

如何在 Django REST 框架中为多对多字段定义“IsOwner”自定义权限?

Django Rest Framework,如何更新序列化程序中的嵌套值

当父记录存在时,如何在 django rest 框架的子序列化程序中设置外键值

Django Rest框架:序列化程序上的共享字段