【问题标题】:Multiple Django Admin Arguments with Extensions带有扩展的多个 Django 管理参数
【发布时间】:2015-11-10 16:19:11
【问题描述】:

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

示例:我有一个名为“Cars”的模型,它使用“simple-history”扩展名,所以我需要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)

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

【问题讨论】:

    标签: python django django-admin django-extensions


    【解决方案1】:

    在 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)
    

    【讨论】:

    • 哇!非常感谢这个答案。我应该阅读更多关于进出口文档的内容。没想到会得到这么简单的答案,真的很感激。
    猜你喜欢
    • 2014-11-03
    • 2017-04-10
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多