【问题标题】: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
【问题描述】:

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

如何实现?

【问题讨论】:

    标签: python django django-models


    【解决方案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
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-02-29
      • 2018-11-17
      • 2018-07-02
      • 2016-02-20
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多