带有扩展的多个 Django 管理参数

Multiple Django Admin Arguments with Extensions

有没有办法在admin.py里面的admin.site.register()中使用多个Django扩展?我正在使用 "simple-history" 和 "import-export" 扩展,但我只能在 admin.site.register().

中使用其中之一

示例:我有一个名为 "Cars" 的模型,它使用 "simple-history" 扩展名,所以我需要 admin.site.register(Cars, SimpleHistoryAdmin),正如他们的文档所说的那样。我也想对同一个 "Cars" 模型使用 import/export 扩展,但是 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)

我试过使用代理和内联,但代理生成了一个我不想要的新模型,当使用内联时,我收到一条错误消息,说它需要外键,但我没有尝试从不同的模型中获取模型对象。将它们命名为相同的模型不起作用,因为该模型已经注册。非常感谢任何帮助!

在python中,class可以有多个parent。只需一次继承 2 parents。但是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)