5

次のようなモデルがあるとします。

class Car(models.Model):
    images = models.ManyToManyField(Image)

class Image(models.Model):
    path = models.CharField()
    type = models.CharField()

2 つの API ビューを公開したいと考えています。

  • 車リスト
  • 車の詳細

リスト ビューでは、type="thumbnail" を持つ画像のみを表示したいと考えています。詳細ビューでは、type="image" の画像を表示したいと考えています。

リストは多かれ少なかれ次のようになります。

[{
    "id": 1,
    "images": [1, 2],
},
{
    "id": 2,
    "images": [3, 4],
}]

詳細ビュー:

{
    "id": 1,
    "images": [5],
}

ビューによって異なるイメージ ID が表示されることに注意してください。

これまでのところ、シリアライザーは次のようになっています。

class CarSerializer(serializers.ModelSerializer):
    images = serializers.ManyPrimaryKeyRelatedField()

    class Meta:
        model = Car

リスト API ビュー:

class CarList(generics.ListAPIView):
    model = Car
    serializer_class = CarSerializer

詳細 API ビュー:

class CarDetails(generics.RetrieveAPIView):
    model = Car
    serializer_class = CarSerializer

もちろん、これにより、リスト内のすべての画像と詳細が表示され、クライアントは表示する必要がある画像タイプを取得するために追加の呼び出しを行う必要があります。

それを行う一般的な方法はありますか?django-filter の例を見てきましたが、リストされているオブジェクトの関連オブジェクトがリストされているのではなく、リストされているオブジェクトをフィルタリングすることしかできないようです。

4

2 に答える 2

1

ここで使用できる解決策がある他の Stackoverflow の質問を見つけました。

Django RESTフレームワークでネストされたリソースにフィルタを適用するにはどうすればよいですか?

(質問自体の「解決策」の見出しの下を参照)

于 2013-08-08T09:53:57.790 に答える