2016-11-30 9 views
0

私は2つのDjangoのモデル(簡体字)持っている:私は基本的なModelSerializersを使用し、両方のモデルのジャンゴ休憩フレームワーク:部分的な更新(PATCH)と外部キー

class Author(models.Model): 
    name = models.CharField() 

class Book(models.Model): 
    author = models.ForeignKey(Author) 
    title = models.CharField() 

を:

class AuthorSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = models.Author 
     fields = '__all__' 

[similar code for BookSerializer] 

最後に、私は」基本的なModelViewSetsを実装しました:

class AuthorViewSet(viewsets.ModelViewSet): 
    queryset = models.Author.objects.all() 
    serializer_class = serializers.AuthorSerializer 

[similar code for BookViewSet] 

今、私は既存の本を部分的に更新しています 変化する。

PATCH /api/v1/book/1/ 
JSON data: {'title': 'Lord of the Flies'} 

私はこのエラーが表示されます。

HTTP 400 Bad Request 
Allow: GET, PUT, PATCH, DELETE, OPTIONS 
Content-Type: application/json 
Vary: Accept 

{ 
    "author": [ 
     "This field is required." 
    ] 
} 

は、私は、これは「作者」はFKであるという事実とは何かを持っていると仮定します。しかし、私はDRFがBookオブジェクトの関係をそのまま維持し、タイトルを更新するだけでこれを処理すると考えています。

私はドキュメントやウェブ上の他の場所でこれについて何も見つかりません。私は何かを欠いているに違いない?

答えて

0

"author"は必須フィールドであり、更新プログラムには提供していません。

PATCH HTTP動詞を使用してその制約をバイパスするか、作成者をrequired=Falseと設定します。

+0

私はPATCHを使用していますが、それはポイントの一種です... – Rik

+0

あなたのコードに何かがあるかもしれないし、これが起こらないようにペーストしていないかもしれません。私はパッチを使っている間にこれを見たことを覚えていません。 – Linovia

+0

あなたはそうです。判明したように、私が書いたビューミックスにはバグがありました。 – Rik

関連する問題