3

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

示例:我有一个名为“Cars”的模型,它使用“simple-history”扩展名,所以我需要admin.site.register(Cars, SimpleHistoryAdmin),正如他们的文档所说的那样。我也想将导入/导出扩展名用于相同的“汽车”模型,但我admin.site.register()不需要多个参数来添加它。

模型.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

管理员.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)

我尝试使用代理和内联,但代理创建了一个我不想要的新模型,并且在使用内联时我收到一个错误,说它需要外键,但我没有尝试获取模型对象来自不同的模型。将它们命名为相同的模型不起作用,因为模型已经注册。任何帮助深表感谢!

4

1 回答 1

3

在 python 中,类可以有多个父级。一次从两个父母那里继承。但是两者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)
于 2015-08-17T22:32:02.463 回答