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

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

我希望这会有所帮助。

【讨论】:

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

Django Admin:如何只保存内联模型而不是父模型

如何从 xgboost 中的最佳迭代中保存模型?

Xamarin Forms:如何通知我以前的视图模型而不是需要修改可观察集合?

Aleo区块链如何扩展到数百万用户

如何更改 laravel 中的用户模型以使用其他表进行身份验证而不是用户?

如何在 R 中为模型构建一个大的正则公式?