亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 管理列表頁面在覆蓋 get_queryset 方法后永遠加載

Django 管理列表頁面在覆蓋 get_queryset 方法后永遠加載

MMMHUHU 2022-12-20 12:15:35
我有這個模型管理員 -class NewsAdmin(ImageWidgetAdmin):    image_fields = ['featured_image']    list_per_page = 20    list_display = ('heading', 'category', 'status', 'is_active', 'created_at', 'published_at',                    'created_by', 'published_by')    list_editable = ('category', 'status', 'is_active')    list_filter = ('published_at', 'created_at', 'status', 'is_active', 'created_by',                   'published_by',)    search_fields = ('heading', 'category', 'tags', 'source')    actions = [enable_object, disable_object, status_draft, status_private, status_public]    actions_on_bottom = True加載最多只需要 400 毫秒。這是 django-debug-toolbar 圖像 -沒有 get_queryset 的 djdt 圖像但是當我覆蓋語言過濾對象的 get_queryset 方法時 -    def get_queryset(self, request):        queryset = super(NewsAdmin, self).get_queryset(request)        return queryset.filter(language=request.LANGUAGE_CODE)大約需要 17-18 秒,這太瘋狂了??!這是 django-debug-toolbar 圖像 -帶有 get_queryset 的 djdt 圖像甚至前端查詢也會發生這種情況!有關詳細信息 - 我有大約 40 萬條記錄的數據庫表,這是模型 -
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

您正在過濾沒有索引的字段。表越大,數據庫掃描每一行所需的時間就越長。更改您的字段定義以允許索引并處理遷移。

language = models.CharField(max_length=10, choices=LANGUAGES, default='bn' db_index=True)



查看完整回答
反對 回復 2022-12-20
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號