gpt4 book ai didi

django-admin - 如何从 django modelAdmin 中的 save_related 表单集中访问所有表单

转载 作者:行者123 更新时间:2023-12-02 08:31:28 26 4
gpt4 key购买 nike

当调用 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)

我需要计算每个发票项目的发票总额,其中每个项目都有数量 * 价格。

最佳答案

我找不到解决方案,所以我保存了相关数据并使用查询集来获取保存的数据,以便我可以进行计算并再次保存。我想有人会称之为“一种解决方法”:)

def save_related(self, request, form, formsets, change):
super(InvoiceAdmin, self).save_related(request, form, formsets, change)
invoice = form.instance
invoice.total = 0
for item in Invoice.objects.get(pk=invoice.id).items.all():
invoice.total = invoice.total + item.quantity * item.price
invoice.save()

关于django-admin - 如何从 django modelAdmin 中的 save_related 表单集中访问所有表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com