如何在序列化程序 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 中为数组数据编写序列化程序?
如何在 Django REST 框架中为多对多字段定义“IsOwner”自定义权限?
Django Rest Framework,如何更新序列化程序中的嵌套值