有没有办法在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)
我尝试过使用代理和内联,但是代理创建了一个我不想要的新模型,当使用内联时我得到一个错误,说它需要一个外键,但我不是想弄来自不同模型的模型对象。将它们命名为相同的模型不起作用,因为模型已经注册。非常感谢任何帮助!
答案 0 :(得分:1)
在python中,类可以有多个父级。只需从2个父母那里继承。但是ImportExportModelAdmin
和SimpleHistoryAdmin
都继承自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)