如何创建一个从其他模型中总结的模型,而不是保存到数据库中而是显示在管理页面中?

Posted

技术标签:

【中文标题】如何创建一个从其他模型中总结的模型,而不是保存到数据库中而是显示在管理页面中?【英文标题】:How to create a model that summary from others model, and not save into database but show in admin page? 【发布时间】:2020-06-27 16:43:27 【问题描述】:

我有一个问题:我需要在管理页面中创建一个表格来汇总其他模型的数据,但它不是数据库中的实际模型。

如何实现?

【问题讨论】:

【参考方案1】:

我假设您将使用现有模型来计算摘要。在模型中创建实例方法/属性(因为这将有助于计算模型的行级摘要)。对于管理员,您可以将 ModelAdmin 与您的模型(可能是 proxy model)一起使用,然后使用 blocki the actions。

模型实例方法/属性将用于计算行级摘要

class YourMainModel(models.Model):
    # Your Model code
    def instanceMethod(self)
        return some_summery_calculation_based_on_model_fields

    @property
    def instanceProperty(self)
        return some_summery_calculation_based_on_model_fields

class YourMainModelProxy(YourMainModel)
    class Meta:
        proxy=True

现在在 admin.py 中

class YourSummeryModelAdmin(admin.ModelAdmin):
    #Configure your model admin (Somewhat like this)
    model = YourMainModelProxy
    list_display = ['instanceMethod','instanceProperty'...]

    # Disable add permission 
    def has_add_permission(self, request):
        return False

    # Disable delete permission
    def has_delete_permission(self, request, obj=None):
        return False

我希望这会有所帮助。

【讨论】:

以上是关于如何创建一个从其他模型中总结的模型,而不是保存到数据库中而是显示在管理页面中?的主要内容,如果未能解决你的问题,请参考以下文章