【问题标题】:Django admin is very slow when loading from the OneToOne user model从 OneToOne 用户模型加载时,Django admin 非常慢
【发布时间】:2022-01-02 08:13:34
【问题描述】:

我认为我做错了管理模型,因为加载大约需要 30 秒,我认为这是因为我的 sql 查询效率太低,并且可能会创建比需要更多的查找。有什么方法可以加快速度吗?

class UserInformationAdmin(admin.ModelAdmin):
    list_display = (
        'user_username',
        'user_first_name',
        'user_last_name',
        'major'
    )

    @admin.display(description='user.username')
    def user_username(self, obj):
        try:
            return obj.user.username
        except Exception:
            return None

    @admin.display(description='user.first_name')
    def user_first_name(self, obj):
        try:
            return obj.user.first_name
        except Exception:
            return None

    @admin.display(description='user.last_name')
    def user_last_name(self, obj):
        return obj.user.last_name```

【问题讨论】:

    标签: python django django-models django-admin django-orm


    【解决方案1】:

    据我所知

        list_select_related = True
    

    将查询转换为更快的select_related 查询。这是基本有效的最终代码。

    class UserInformationAdmin(admin.ModelAdmin):
        list_select_related = True
        
        list_display = (
            'user_username',
            'user_first_name',
            'user_last_name',
            'major'
        )
    
        @admin.display(description='user.username')
        def user_username(self, obj):
            try:
                return obj.user.username
            except Exception:
                return None
    
        @admin.display(description='user.first_name')
        def user_first_name(self, obj):
            try:
                return obj.user.first_name
            except Exception:
                return None
    
        @admin.display(description='user.last_name')
        def user_last_name(self, obj):
            return obj.user.last_name```
    

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多