0

register() 只接受 3 个位置参数(“self”被隐式传递。如果已经使用 ModelAdmin 类在 Django Admin 中自定义模型的外观,我的注册将如下所示:

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)

如果我想注册 SimpleHistoryAdmin,我将添加第四个位置参数,如下所示:

admin.site.register(AttorneyGroup, AttorneyGroupAdmin, SimpleHistoryAdmin)

这会引发以下异常:

TypeError: register() takes from 2 to 3 positional arguments but 4 were given

如果用户已经使用 ModelAdmin 自定义模型,似乎无法注册简单历史。有没有另一种方法来实现避免这个问题的简单历史?

4

2 回答 2

3

像这样做:

class AttorneyGroupAdmin(SimpleHistoryAdmin):
      #custom admin

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)

这使您可以使用简单历史管理,同时仍然可以根据需要自定义它

于 2016-07-19T15:24:25.067 回答
0

如果您愿意,可以将所有这些放在单独的寄存器函数中:

admin.site.register(AttorneyGroup)
admin.site.register(AttorneyGroupAdmin)
admin.site.register(SimpleHistoryAdmin)

编辑:

您的评论是正确的。我的原始代码是为了表明您不需要在一行中完成每个模型。我应该更准确。你可以这样做:

from .models import AttorneyGroup, SimpleHistory

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)
admin.site.register(SimpleHistory, SimpleHistoryAdmin)
于 2016-07-19T14:46:38.720 回答