我正在尝试查看(而不是编辑)嵌入式表单集中的相关字段。在这种情况下,我想以数量形式显示物料成本。
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
好像是黑客!