不确定这是否可行,但在Django Admin 的购物车(模型类)详细视图中,我想合计我的所有 TabularInline条目模型类小计,并将该值保存到我的购物车的 total_price属性。有没有办法做到这一点,或者以某种方式使用过滤器或表单小部件将所有小计添加在一起以达到相同的目的?提前感谢您的帮助!
下面是我想做的一个例子。您可以在总价字段中看到我手动输入了 130(小计:90 + 20 + 20 = 130)。我希望每次从库存中添加条目并编辑其数量时自动计算此值。
到目前为止,在我的 admin.py 中,我有一个 TabularInline 管理类,它通过将每个条目的数量乘以其各自的价格来返回每个条目的小计。然后我的 CartAdmin 类在购物车模型详细信息视图中显示该内联关系。
管理员.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')
}),
)
模型.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)