首页 > 解决方案 > 允许 Django admin.site.register 接受超过 3 个参数

问题描述

我正在尝试在同一模型上同时使用图像裁剪工具和 Django 可排序工具。但是,它说我最多只能添加 3 个位置参数。这到底是什么意思,是否有特定的解决方案或解决方法?

from django.contrib import admin
from .models import Rower, Race, Leadership, Event
from image_cropping import ImageCroppingMixin
from adminsortable2.admin import SortableAdminMixin

class MyModelAdmin(ImageCroppingMixin, admin.ModelAdmin):
    pass

class MyModelAdminSorting(SortableAdminMixin):
    pass

admin.site.register(Rower, MyModelAdmin)
admin.site.register(Race)
admin.site.register(Leadership, MyModelAdminSorting, MyModelAdmin)
admin.site.register(Event)

错误:admin.site.register(Leadership, MyModelAdminSorting, MyModelAdmin) TypeError: register() 需要 2 到 3 个位置参数,但给出了 4 个

标签: djangodjango-modelsdjango-views

解决方案


你不是那样做的。

您创建一个LeadershipAdmin从您想要的位置继承的自定义,例如:

class LeadershipAdmin(ImageCroppingMixin, SortableAdminMixin):
    pass

由于上面的代码将负责继承裁剪 mixin 和 Django 的ModelAdmin.

然后你只注册LeadershipAdmin

admin.site.register(Leadership, LeadershipAdmin)

每个模型只注册一个管理类,而不是它们的列表。


推荐阅读