Python Django管理站点中数据输入的最佳实践(同一模型上的不同模型管理)

Python Django管理站点中数据输入的最佳实践(同一模型上的不同模型管理),python,django,django-admin,Python,Django,Django Admin,将自定义视图添加到Django管理站点以协调数据输入的最佳实践是什么?我有一个模型foo,它已经有一个ModelAdmin\u FooAdmin\u。这对于编辑和调整数据很好,但是为了方便批量数据输入,我想添加一个额外的视图,它有一个表单可以一次添加,比如说,20个foo 我无法将另一个ModelAdmin添加为Django错误,并且已注册:model foo已注册 我在中看到,我可以覆盖get_url(),但这似乎有点骇人,因为我只需要在同一个模型上有两个稍微不同的ModelAdmin 有什么

将自定义视图添加到Django管理站点以协调数据输入的最佳实践是什么?我有一个模型foo,它已经有一个
ModelAdmin\u FooAdmin\u
。这对于编辑和调整数据很好,但是为了方便批量数据输入,我想添加一个额外的视图,它有一个表单可以一次添加,比如说,20个foo

我无法将另一个ModelAdmin添加为Django错误,并且
已注册:model foo已注册

我在中看到,我可以覆盖
get_url()
,但这似乎有点骇人,因为我只需要在同一个模型上有两个稍微不同的
ModelAdmin


有什么提示吗?

我有model InspectorCheck和两个ModelAdmin类用于同一个模型-一个用于显示删除字段等于False的记录,另一个用于显示删除的记录

此函数用于创建从主模型继承的新代理模型类:

def create_proxymodel(model_from, name=None, attrs=None, meta=None):
    attrs, meta = (attrs if attrs else {}, meta if meta else {})

    class  Meta:
        proxy = True
        app_label = model_from._meta.app_label

    for k, v in meta.items():
        setattr(Meta, k, v)

    attrs.update({'__module__': '', 'Meta': Meta})
    newmodel = type(name, (model_from,), attrs)

    return newmodel
两个不同用途的模型管理员:

class InspectorCheckAdmin(admin.ModelAdmin):
    list_display = ('id', 'check_address', 'check_form', 'check_target_name')

class InspectorCheckAdminDeleted(admin.ModelAdmin): # or inherit from other ModelAdmin
    list_display = ('id', 'check_address', 'check_form', 'check_target_name', 'editor', 'updated')
    def queryset(self, request):
        return InspectorCheck.trash


#and in last step create and register both classes:

InspectorCheckDeleted = create_proxymodel(InspectorCheck, 'InspectorCheckDeleted', meta={
    'verbose_name': u'Inspector check (deleted)',
    'verbose_name_plural': u'Inspector checks (deleted)'}
)
admin.site.register(InspectorCheck, InspectorCheckAdmin)
admin.site.register(InspectorCheckDeleted, InspectorCheckAdminDeleted)

对于同一个模型,我有model InspectorCheck和两个ModelAdmin类——一个用于显示删除字段等于False的记录,另一个用于显示删除的记录

此函数用于创建从主模型继承的新代理模型类:

def create_proxymodel(model_from, name=None, attrs=None, meta=None):
    attrs, meta = (attrs if attrs else {}, meta if meta else {})

    class  Meta:
        proxy = True
        app_label = model_from._meta.app_label

    for k, v in meta.items():
        setattr(Meta, k, v)

    attrs.update({'__module__': '', 'Meta': Meta})
    newmodel = type(name, (model_from,), attrs)

    return newmodel
两个不同用途的模型管理员:

class InspectorCheckAdmin(admin.ModelAdmin):
    list_display = ('id', 'check_address', 'check_form', 'check_target_name')

class InspectorCheckAdminDeleted(admin.ModelAdmin): # or inherit from other ModelAdmin
    list_display = ('id', 'check_address', 'check_form', 'check_target_name', 'editor', 'updated')
    def queryset(self, request):
        return InspectorCheck.trash


#and in last step create and register both classes:

InspectorCheckDeleted = create_proxymodel(InspectorCheck, 'InspectorCheckDeleted', meta={
    'verbose_name': u'Inspector check (deleted)',
    'verbose_name_plural': u'Inspector checks (deleted)'}
)
admin.site.register(InspectorCheck, InspectorCheckAdmin)
admin.site.register(InspectorCheckDeleted, InspectorCheckAdminDeleted)