我为Django模型创建了一个自定义管理器,它返回一个包含对象子集的查询集.全部().我需要它作为模型的默认管理器,因为我还创建了一个自定义标记,该标记将从任何模型(由参数指定)检索内容,并且需要为指定的模型使用默认管理器.除了-Django Admin还使用这个特定模型的默认管理器,这意味着并非所有的模型实例都出现在Admin中,所有这些都可以正常工作.

Django doctor 帮不上忙:

如果使用自定义管理器对象,请注意第一个管理器Django遇到(在

管理员不应该使用默认的管理器,但它似乎在我的情况下.请注意,我还显式添加了默认管理器objects:

subset = CustomManager() # the default manager
objects = models.Manager() # the one I want admin to use

如何指定管理员应该使用哪个管理器?

推荐答案

您可以通过重写ModelAdmin子类中的queryset方法来 Select 管理器.

def get_queryset(self, request):
    # use our manager, rather than the default one
    qs = self.model.objects.get_queryset()

    # we need this from the superclass method
    ordering = self.ordering or () # otherwise we might try to *None, which is bad ;)
    if ordering:
        qs = qs.order_by(*ordering)
    return qs

Django相关问答推荐

将所有守护用户对象权限从一个Django用户重新分配给另一个Django用户

Django-表单(ModelForm)中的数据不保存在现有数据库中

如何在Django管理自定义筛选器中包含自定义模型方法?

根据当前对象中的多对多字段过滤对象

dj_rest_auth 中的 PyTest 警告- RemovedInDjango40Warning: django.conf.urls.url() 已弃用,取而代之的是 django.urls.re_path()

如何将多个模型添加到单个列表视图?

Django 关系嵌套related_name

Django ORM:获取每个类别的月平均价格

如何在 django 中修改现有模型实例?

相同的字符串不同的翻译

如何在不使用 sudo 的情况下安装 virtualenv?

如何在 Django 中返回静态 HTML 文件作为响应?

在 Django 网站上找不到页面 404?

在 Django 管理屏幕中删除添加另一个

Django 1.9 中 django.db.models.loading.get_model() 的类似功能是什么?

Django:创建索引:非唯一,多列

Django:在管理界面中显示图像

如何在字段集中显示 Django 管理内联模型?

Django:以 10 为底的 int() 的无效文字

将属性添加到 Django 模型的 Meta 类中