Django RESTフレームワークのGETネストされたシリアライザーはエラーを生成します: 'RelatedManager'オブジェクトには属性がありません 'datafile_set' "

ボリス・ブルコフ

ネストされたシリアライザーの2レベルの深さのスタックがあります。

class ToolSerialier(serializers.ModelSerializer):
    input = ToolInputSerializer()

    class Meta:
        model = Tool
        fields = ('docker_image', 'input')

class ToolInputSerializer(serializers.ModelSerializer):
    datafile_set = ToolInputDatafileSerializer(many=True)

    class Meta:
        model = ToolInput
        fields = ('datafile_set', )

class ToolInputDatafileSerializer(serializers.ModelSerializer):
    class Meta:
        model = ToolInputDatafile
        fields = ('name', 'file')

およびそれぞれのモデル:

class Tool(models.Model):
    docker_image = models.CharField(max_length=255, null=True, blank=True)

class ToolInput(models.Model):
    tool = models.ForeignKey(Tool, related_name="input")

class ToolInputDatafile(models.Model):
        tool_input = models.ForeignKey(ToolInput, related_name="datafile_set")
        name = models.CharField(max_length=255)
        file = jsonfield.JSONField()

これで、GETリクエストをToolSerializersリストエンドポイントに送信すると、エラーメッセージが表示されます。

AttributeError at /api/tool/

Got AttributeError when attempting to get a value for field `datafile_set` on serializer `ToolInputSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `RelatedManager` instance. 
Original exception text was: 'RelatedManager' object has no attribute 'datafile_set'.

明らかに、何らかの理由で、ToolInputのget()メソッドが呼び出されず属性RelatedManagerへのアクセスに失敗しdatafile_setます。

どうして?どのような修正を導入する必要がありますか?

リノビア

あなたはmany=True議論を逃しています:

class ToolSerialier(serializers.ModelSerializer):
    input = ToolInputSerializer(many=True)

FKが逆になっているため、これが必要です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Ansibleで複数行のシェルスクリプトを実行する方法

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    パンダは異なる名前の列に追加します

  8. 8

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  9. 9

    グラフ(.PNG)ファイルをエクスポートするZabbix

  10. 10

    Chromeウェブアプリのウェブビューの高さの問題

  11. 11

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  12. 12

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  13. 13

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  14. 14

    Reactでclsxを使用する方法

  15. 15

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  16. 16

    テキストフィールドの値に基づいて UIslider を移動します

  17. 17

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  20. 20

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  21. 21

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

ホットタグ

アーカイブ