当调用 save_related 时,我需要访问内联表单集中所有表单的两个字段,而 save_related 只允许我访问更改的表单/数据。
我的问题的任何其他解决方案都可以,所以这里是:
class Invoice(models.Model):
invoice = models.CharField(max_length=10, blank=True, null=True, unique=True)
total = models.PositiveIntegerField(blank=True, null=True)
class InvoiceItem(models.Model):
invoice = models.ForeignKey(Invoice, related_name='items')
service = models.ForeignKey(Service)
quantity = models.PositiveIntegerField(blank=False, default=1)
price = models.PositiveIntegerField(blank=False, default=0)
class InvoiceItemInline(admin.TabularInline):
model = InvoiceItem
class InvoiceAdmin(admin.ModelAdmin):
inlines = [InvoiceItemInline]
def save_related(self, request, form, formsets, change):
invoice = form.instance
invoice.total = 0
for inlines in formsets:
for inline_form in inlines:
invoice.total = invoice.total + inline_form.cleaned_data['price'] * inline_form.cleaned_data['quantity']
invoice.save()
super(InvoiceAdmin, self).save_related(request, form, formsets, change)
我需要计算每个发票项目的发票总额,其中每个项目都有数量 * 价格。