私はDjango RESTフレームワークを使用してWebアプリケーションのAPIを作成しています。私はをMeta
クラスに設定したクラス 'Comment'を持っています。これはGET
Comments
を入力するとうまくいきます。 POST
またはPUT
リクエストを送信しようとすると(つまり、新しいComment
を作成します)、私はForeignKey IDの代わりにオブジェクトを含める必要があると言われます。ここでDjango RESTフレームワークのPOST/PUTの深さが異なる?
は私のシリアライザクラスです:
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
depth = 2
モデル:
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)
ビューコード:
class Comments(generics.ListCreateAPIView):
model = Comment
serializer_class = CommentSerializer
def pre_save(self, obj):
obj.user = self.request.user
と出力(JSON)で表示されるエラーがされ:
{"user": ["This field is required."], "budget": [{"non_field_errors": ["Invalid data"]}]}
この生データが送信されます。
{"budget": 2, "published": true, "body": "Another comment"}
{{"budget_id":2} 'または{{" budget ":{" id ":2}}'を送信するとどうなりますか? –
RE @Nathan Villaescusa。他の予算項目が必要に応じて表示されます。 – panchicore