通过inline_formset

时间:2019-06-26 09:54:57

标签: python django

我正在尝试查看(而不是编辑)嵌入式表单集中的相关字段。在这种情况下,我想以数量形式显示物料成本。

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_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

好像是黑客!

0 个答案:

没有答案