Django - как суммировать 2 DecimalFields в модели и отобразить в представлении администратора?

У меня есть 2 поля DecimalFields в одной модели. Как я могу суммировать оба поля вместе, чтобы итог отображался в представлении администратора?

цена = models.DecimalField(max_digits=6, decimal_places=2) споттеры = models.DecimalField(max_digits=6, decimal_places=2, default=150)

Там должен быть "контейнер для сохранения суммы в админском представлении, так что у меня есть: total_price = models.DecimalField(max_digits=100, decimal_places=3, default=0) в конце

затем я заканчиваю методом возврата: def get_cost(self): return self.price + self.spotters

но он не работает

Вы можете использовать отображение списка ModelAdmin, как указано в документации .

class MyModel(models.Model):
    ...
    def get_cost(self) -> int:
        return self.price + self.spotters

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['get_cost']

Вы можете использовать отображение списка ModelAdmin, как указано в документации .

class MyModel(models.Model):
    ...
    def get_cost(self) -> int:
        return self.price + self.spotters

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['get_cost']

Я бы посоветовал работать со свойством и без а total_price, так как это только вводит дублирование данных , поэтому:

class MyModel(models.Model):
    price = models.DecimalField(max_digits=6, decimal_places=2)
    spotters = models.DecimalField(max_digits=6, decimal_places=2, default=150)

    @property
    def total_price(self):
        return self.price + self.spotter

В ModelAdmin можно затем добавить 'total_price' в readonly_fields атрибут [Django-doc]:

class MyModelAdmin(admin.ModelAdmin):
    fields = ('price', 'spotters')
    readonly_fields = ('address_report',)

admin.site.register(MyModel, MyModelAdmin)

Я бы посоветовал работать со свойством и без а total_price, так как это только вводит дублирование данных , поэтому:

class MyModel(models.Model):
    price = models.DecimalField(max_digits=6, decimal_places=2)
    spotters = models.DecimalField(max_digits=6, decimal_places=2, default=150)

    @property
    def total_price(self):
        return self.price + self.spotter

В ModelAdmin можно затем добавить 'total_price' в readonly_fields атрибут [Django-doc]:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('price', 'spotters', 'total_price')
    fields = ('price', 'spotters')
    readonly_fields = ('total_price',)

admin.site.register(MyModel, MyModelAdmin)
Вернуться на верх