【发布时间】:2020-11-25 20:33:35
【问题描述】:
我正在使用 django rest 框架来创建一个 api 端点。我正在使用 django 提供的默认用户模型。我需要创建一个使用用户作为外键的帖子。帖子中名为“作者”的用户可以有多个帖子。
这是一个 post json 的示例。
[
{
"author": {
"id": 1,
"username": "sorin"
},
"title": "First Post",
"description": "Hello World!",
"created_at": "2020-08-05T14:20:51.981163Z",
"updated_at": "2020-08-05T14:20:51.981163Z"
}
]
这是模型。
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=255)
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
这是序列化器。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username')
class PostSerializer(serializers.HyperlinkedModelSerializer):
author = UserSerializer()
class Meta:
model = Post
fields = ('author', 'title', 'description', 'created_at', 'updated_at')
我收到错误“.create() 方法默认不支持可写嵌套字段。”尝试使用“用户名”、“标题”和“描述”进行发布请求时。
对如何解决这个问题有帮助吗?
【问题讨论】:
-
不能直接保存嵌套数据。这可能会有所帮助。stackoverflow.com/questions/41394761/…
-
您可以使用第三方库来获取嵌套的、可写的序列化程序github.com/beda-software/drf-writable-nested
标签: python django django-rest-framework