相关疑难解决方法(0)

Django REST Framework为POST/PUT提供了不同的深度?

我正在使用Django REST Framework为我的Web应用程序创建API.我有一个班级'评论',已depth=2Meta课堂上设定.这很有GETComments.当我尝试发送POSTPUT请求(即创建一个新的Comment)时,我被告知我需要包含对象而不是ForeignKey ID.

这是我的Serializer类:

class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        depth = 2 
Run Code Online (Sandbox Code Playgroud)

该模型:

class Comment(models.Model):
    user = models.ForeignKey(User, null=True, blank=True,
        related_name='comments')
    budget = models.ForeignKey(Budget, related_name='comments')
    published = models.BooleanField(default=False)
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

视图代码:

class Comments(generics.ListCreateAPIView):

    model = Comment
    serializer_class = CommentSerializer

    def pre_save(self, obj):
        obj.user = self.request.user
Run Code Online (Sandbox Code Playgroud)

输出(JSON)中显示的错误是:

{"user": ["This field is required."], "budget": [{"non_field_errors": ["Invalid data"]}]}
Run Code Online (Sandbox Code Playgroud)

发送此原始数据时:

{"budget": 2, "published": …
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

9
推荐指数
3
解决办法
6915
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1

rest ×1