带有扩展的多个Django Admin参数

时间:2015-08-17 21:58:07

标签: python django django-admin django-extensions

有没有办法在admin.py里面的admin.site.register()中使用多个Django扩展?我正在使用“简单历史记录”和“导入导出”扩展程序,但我只能在admin.site.register()中使用其中一个。

示例:我有一个名为“Cars”的模型,它正在使用“简单历史”扩展,所以我需要admin.site.register(Cars, SimpleHistoryAdmin),因为他们的文档说它应该。我想使用导入/导出扩展以及相同的“汽车”模型,但admin.site.register()不会为我添加多个参数。

models.py

class Cars(models.Model):
    Year = models.CharField(max_length=30)
    Make = models.CharField(max_length=30)
    Model = models.CharField(max_length=30)
    history = HistoricalRecords()

    class Meta:
        verbose_name_plural = "Car Table"

    def __str__(self):
        return self.Make

admin.py

class CarResource(resources.ModelResource):
    class Meta:
        model = Cars
        fields = ('id','Year', 'Make', 'Model',)

class CarAdmin(ImportExportModelAdmin):
    resource_class = CarResource
    pass

#I want to use the import/export extension (code above), along with simple-history
admin.site.register(Cars, CarAdmin)
admin.site.register(Cars, SimpleHistoryAdmin)

我尝试过使用代理和内联,但是代理创建了一个我不想要的新模型,当使用内联时我得到一个错误,说它需要一个外键,但我不是想弄来自不同模型的模型对象。将它们命名为相同的模型不起作用,因为模型已经注册。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

在python中,类可以有多个父级。只需从2个父母那里继承。但是ImportExportModelAdminSimpleHistoryAdmin都继承自ModelAdmin,这并不好。还有ImportExportMixin,我们可以使用它代替ImportExportModelAdmin,因此只有一个对ModelAdmin的引用。

class CarResource(resources.ModelResource):
    class Meta:
        model = Cars
        fields = ('id','Year', 'Make', 'Model',)

class CarAdmin(ImportExportMixin, SimpleHistoryAdmin):
    resource_class = CarResource
    pass

#I want to use the import/export extension (code above), along with simple-history
admin.site.register(Cars, CarAdmin)