通过内联表单访问相关字段

2024-04-29 11:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图查看(而不是编辑)内联表单集中的相关字段。在这种情况下,我想在数量表单集中显示项目成本

models.py

class Item(models.Model):
    name = models.CharField(max_length=40)
    notes = models.CharField(max_length=200, blank=True)
    cost = models.DecimalField(default=0.00, max_digits=8, decimal_places=2, blank=True)

class Quantity(models.Model):
    quantity = models.IntegerField(default=0)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)

forms.py

class QuantityForm(ModelForm):

def __init__(self, *args, **kwargs):

    super(QuantityForm, self).__init__(*args, **kwargs)

class Meta:
    model = Quantity
    fields = ['id','item', 'quantity']

views.py

QuantityFormSet = inlineformset_factory(Option, Quantity, form=QuantityForm, formset=QuantityInlineFormSet, extra=1)

quantityForm = QuantityFormSet(instance=option)

我想我必须做这样的事情

    for form in quantityForm.forms:
        form.item_cost = form.fields['item'].selected.cost

但我有点困了。当然,在forms.py中这样做更好吗

解决方法

好的,这是一个大的解决办法,但我在数量表单中创建了一个新字段,名为item\u cost

item_cost = models.DecimalField(default=0.00, max_digits=8, decimal_places=2, blank=True)

然后,我将成本从项目复制到数量

quantities = Quantity.objects.filter(option=option)

for quantity in quantities:
    quantity.item_cost = quantity.item.cost

看起来像个黑客


Tags: pyformtruedefault表单数量modelsforms