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)