私たちは職場でDjango Rest Frameworkを持っていますが、私は彼の次のオープンソースプロジェクトのためにDRFをやることを決めたフロントエンドの開発者です。クエリテーブルに結合テーブルのフィールドを含めるにはどうすればいいですか?
シリアライザ、モデルなどのすべてを見ることができるので、たくさんのコードをコピーして貼り付けたくないです。on GitHub。
私は仕事中の開発者に尋ねました。 1つは、最初からシリアル化されたモデルを構築しているので、正しくないと思われるto_representation
を上書きする必要があると述べました。作業中の他のDjango開発者は、私がcustom relation fieldsを調べることを提案しました。基本的に以下のシリアライザ与え
、どのように私は、「タイプ」(悪いという名前の)私のクエリセットでの私の参加のテーブルから列含まれます:私はのようなものを探しています擬似コードで
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'countries')
を以下、そのユーザーを取得するときに、あなたも参加し、テーブルから多対多の関係と同様に、「タイプ」を介してうまく働いているcountries
を、関連付けられます:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'countries', 'pinned.type')
私は」 dは次のようなJSON応答を期待しています:
{
"username": "wildhoney",
"countries": [
{ "country_id": 4, "type": 1 },
{ "country_id": 5, "type": 2 },
{ "country_id": 6, "type": 3 }
]
}
現在のところ、私はcountry_id
のリストしか受け取っていません。
私はそれを行うとget:フィールド名 'type'が、モデル' Country'のために有効ではありません。それは 'type'が' CountrySerializer'ではなく 'PinnedSerializer'にあるからですか? – Wildhoney
ああ、申し訳ありません。私は誤解しました。私は 'type'は' Country'の分野だと思った。あなたが少し後ろ向きにしているように見え、あなたの応答に 'countries'の代わりに' pins'リストが必要です。 –
多分、私はそれを達成する方法がわかりません。 [ソースコードはGithubにあります](https://github.com/Wildhoney/TravelMap/tree/master/backend/api)。 '/ user/wildhoney'(これはhttps://pastebin.com/HfAEXvtj)と[これが理想的です](https://pastebin.com/zAQKh09G)のために。 – Wildhoney