django Restフレームワーク冗長クエリを削除する方法は?

ズームウィット

Djangoを使用debug_toolbarしてSQLクエリを表示し、2番目のSQLクエリを削除したいと思います。

1.(SELECT ... FROM auth_user LEFT OUTER JOIN accounts_userextension ON (auth_user.id = accounts_userextension.user_id) 50.86474349085549% 28.30 Sel 
Expl)   
2.(SELECT ... FROM auth_user LIMIT 1000  49.13525650914451%   27.34 Sel  Expl)

ここにありmodels.pyます:

class UserExtension(models.Model):      
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name='user_detail')
    birthday = models.DateField(null=True,blank=True)

ここにありserializers.pyます:

from django.contrib.auth.models import User   
from .models import UserExtension    
class UserExtensionSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserExtension
        fields = '__all__'

class accountDetailSerializer(serializers.ModelSerializer):
    user_detail = UserExtensionSerializer()
    class Meta:
        model = User
        fields = [
            "username",
            "email",
            "first_name",
            'user_detail',
        ]

ここにありviews.pyます:

class AccountView(generics.ListCreateAPIView):    
    queryset = User.objects.all().select_related('user_detail')
    serializer_class = accountDetailSerializer
    permission_classes = ()
anjaneyulubatta505

余分なクエリはuser_detail = UserExtensionSerializer()。のためだと思います以下のコードを試してください。私はテストしていませんが、動作するはずです。

class accountDetailSerializer(serializers.ModelSerializer):
    user_details = UserExtensionSerializer(source='user_detail')
    class Meta:
        model = User
        fields = [
            "username",
            "email",
            "first_name",
            'user_details',
        ]

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

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

編集
0

コメントを追加

0

関連記事

DjangoのRESTフレームワークリクエストをユニットテストする方法は?

Django:Django Restフレームワークを既存のアプリケーションに統合する方法は?

Django RESTフレームワーク文字列のリストをシリアル化する方法は?

django RestフレームワークのDecimalFieldシリアライザーに選択肢を提供する方法は?

djangoのRESTフレームワークで外部キーを逆シリアル化する方法は?

Django Restフレームワーク:クエリセットをResponse()に渡す

Django RESTフレームワークで自己との再帰的な関係をシリアル化する方法は?

DJango RESTフレームワーク:ModelViewSetを使用して作成、一覧表示、更新、削除を作成する方法

Django RESTフレームワークでクエリセットをシリアル化する

Django RESTフレームワークでPOSTフォームを非表示にする方法は?

Django Restフレームワーク:エラー応答形式をグローバルに変更する方法

トークン認証をswagger + django restフレームワークに追加する方法は?

Django RESTフレームワークのすべてのハイパーリンクを相対リンクにする方法は?

クラスベースのビューで主キーを削除する(django restフレームワーク)

Django REST Framework認証でGraphene GraphQLフレームワークを使用する方法

Postman を使用して Django REST フレームワークに認証する方法

djangoのRESTフレームワークにオブジェクトの配列を投稿する方法は?

Django RESTフレームワーク-クエリパラメータに対するフィルタリング

Django RESTフレームワークでクエリパラメーターオプションを表示する方法-Swagger

DjangoでPOSTデータを受信する方法、djangoフォームまたはDjango RESTフレームワークを使用する必要がありますか?

django Restフレームワークシリアライザーのドロップダウンアイテムをフィルタリングする方法は?

djangoフレームワークでdjango-registeringを使用する方法は?

django RESTフレームワークを使用する「適切な」方法は何ですか?

Django RESTフレームワークで認証を無効にする方法はありますか

Django Restフレームワーク:成功または失敗したリクエストをテキストファイルに記録する

django RESTフレームワークを使用してGETリクエストのクエリパラメータから複数のIDをフィルタリングする方法は?

Django RESTフレームワークのキャッシュを無効にする方法は?

Restfulフレームワークで外部キーによって設定されたdjangoクエリをフィルタリングする方法は?

DjangoレストフレームワークでImageFiledを処理する方法は?

TOP 一覧

  1. 1

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

  2. 2

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

  3. 3

    CSSのみを使用して三角形のアニメーションを作成する方法

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

    Excel - count multiple words per cell in a range of cells

  9. 9

    PictureBoxで画像のブレンドを無効にする

  10. 10

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

  11. 11

    スタート画面にシャットダウンタイルを追加するにはどうすればよいですか?

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  14. 14

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  15. 15

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  16. 16

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  17. 17

    QGISとPostGIS(マップポイント(米国の地図上にraduisを使用した緯度と経度)

  18. 18

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

  19. 19

    ターミナルから「入力ソースの変更」ショートカットを設定する

  20. 20

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

  21. 21

    同じクラスの異なるバージョンを使用したクラスローディング:java.lang.LinkageError:名前の重複クラス定義を試行しました

ホットタグ

アーカイブ