Не уверен, что это возможно, но в моем подробном представлении Корзина (класс модели) в Django Admin, я хотел бы суммировать весь мой класс модели TabularInline Entry промежуточные итоги и сохраните это значение в атрибуте total_price моей корзины .Есть ли способ сделать это или каким-то образом использовать фильтр или виджет формы, чтобы добавить все промежуточные итоги вместе для той же цели?Заранее спасибо за любую помощь!
Ниже приведен пример того, что я хотел бы сделать.Вы можете видеть в поле итоговой цены, которое я вручную ввел 130 (итого: 90 + 20 + 20 = 130).Я бы хотел, чтобы это вычислялось автоматически при каждом добавлении записи из инвентаря и изменении ее количества.
Пока что у моего администратора.py У меня есть административный класс TabularInline, который возвращает промежуточный итог для каждой записи, умножая ее количество на соответствующую цену.Затем мой класс CartAdmin отображает эти встроенные отношения в подробном представлении модели корзины.
admin.py
class EntryInline(admin.TabularInline):
model = Entry
extra = 0
readonly_fields = ['subtotal']
exclude = ['price']
def subtotal(self, obj):
return "$" + str(obj.quantity * obj.inventory.price)
class CartAdmin(admin.ModelAdmin):
inlines = [EntryInline]
fieldsets = (
(None, {
'fields':('user', 'total_price')
}),
)
models.py
class Inventory(models.Model):
quantity = models.IntegerField()
price = models.DecimalField(max_digits=5, decimal_places=2)
class Cart(models.Model):
user = models.OneToOneField(User)
total_price = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True)
class Entry(models.Model):
cart = models.ForeignKey(Cart, related_name="entries")
inventory = models.ForeignKey(Inventory, related_name="entries")
quantity = models.PositiveSmallIntegerField(default=1)
price = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True)