【学習記録】DjangoのQuerySetの書き方

現場でPythonDjango Rest frameworkを使っており、随時勉強中です。
Djangoの作法的なものが少しづつわかってきたものの、まだまだ知らないことが多いのでどんどんコード書いて慣れていきたいです。
今日はSQLで言うところのIN句でデータを取得したい場面があり、調べまくった結果なんとか実装できたので参考になったページをメモします。
本記事はメモのみで自分で書いたコードは記載していません。

Django Rest frameworkでは生のSQLはあまり書くことがないみたいでDjangoのビルドイン関数を使ってデータを取得することが一般的なようですが、慣れないうちは使いこなすのが難しいですね。

データの取得方法は以下の記事が非常に参考になりました。

qiita.com

モデル名.objects.filter(カラム名__in=[パラメータの配列])みたいな感じでIN句でデータを取得できるとのこと。

以下は上記ドキュメントに記載されていたコード例

products = Product.objects.filter(name__in=["hoge", "fuga"])

また、公式ドキュメントではURLからパラメータを取得するコード例が書かれていました。

class PurchaseList(generics.ListAPIView):
    serializer_class = PurchaseSerializer

    def get_queryset(self):
        """
        Optionally restricts the returned purchases to a given user,
        by filtering against a `username` query parameter in the URL.
        """
        queryset = Purchase.objects.all()
        username = self.request.query_params.get('username', None)
        if username is not None:
            queryset = queryset.filter(purchaser__username=username)
        return queryset

www.django-rest-framework.org

なるほど、ということはURLにクエリとして渡したいパラメータをつけてAPIにリクエストを送ればIN句と同じようにデータを取得できそう。

引き続きPythonDjangoについて勉強していきます。