gpt4 book ai didi

django - Django admin:对用户具有外键的ModelAdmin每行添加一个查询

转载 作者:行者123 更新时间:2023-12-02 04:07:08 25 4
gpt4 key购买 nike

我在Django admin中遇到的一个问题:
我创建了一个ModelAdmin派生类。
此类的属性list_select_related设置为True。

如果我在list_display中向用户模型添加外键字段,则无论我做什么,显示的每一行都会以以下形式添加查询:

SELECT `auth_user`.`id`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`password`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`is_superuser`, `auth_user`.`last_login`, `auth_user`.`date_joined`, `auth_user`.`picture_id` FROM `auth_user` WHERE `auth_user`.`id` = 1

它使管理员相当慢,怎么回事?提前致谢。

最佳答案

好的,我设法解决了这个问题。
您必须在代码中非常具体。
您必须像这样重写ModelAdmin.queryset,以防止运行那些多余的无用查询。
这使查询计数从286减少到7(对于100个项目的页面)。

编辑ModelAdmin.queryset

class MyModelAdmin(ModelAdmin):
def queryset(self, request):
qs = super(AccessAdmin, self).queryset(request)
qs = qs.select_related('user','ip','user__picture').only('user__username','path','referrer','ip__id','ip__string','ip__country','time','user__id','id','ip__ip','user__picture','user__picture__id','user__picture__image')
return qs

您将必须仔细选择字段和外键。
如果您想知道,则使用Model.add_to_class方法添加了user.picture字段。

关于django - Django admin:对用户具有外键的ModelAdmin每行添加一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com