如何在序列化程序 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 框架中为外键设置源的主要内容,如果未能解决你的问题,请参考以下文章