我正在使用Django REST Framework为我的Web应用程序创建API.我有一个班级'评论',已depth=2在Meta课堂上设定.这很有GET用Comments.当我尝试发送POST或PUT请求(即创建一个新的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) 我正在构建一个包含各种CRUD端点的RESTful Rails服务.在其中一个Create端点上,我传入的数据包括:
...
action: "action_name"
...
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是params[:action]包含"create",而不是action我传入的参数的实际值.我认为这是因为params[:action]Rails会自动填充.
有没有其他方法来访问我传递的这个键?我做了一些公然愚蠢的事吗?