Как создать модель, которая сводится из другой модели, и не сохранять в базе данных, а показывать на странице администратора? - PullRequest
0 голосов
/ 16 марта 2020

У меня проблема: мне нужно создать на странице администратора таблицу, которая содержит сводные данные из других моделей, но это не фактическая модель в базе данных.

Как это реализовать?

1 Ответ

1 голос
/ 16 марта 2020

Я предполагаю, что вы собираетесь использовать существующие модели для расчета суммы. Создайте методы / свойства экземпляра в вашей модели (так как это поможет рассчитать сумму на уровне строк для моделей). Для стороны администратора вы можете использовать ModelAdmin с вашей моделью (вероятно, модель прокси ), а затем блокировать действия .

Метод / свойство экземпляра модели будет использоваться для вычисления строки уровень summery

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...