Я пытаюсь просмотреть (не редактировать) связанные поля во встроенном наборе форм.В этом случае я хочу отобразить стоимость товара в наборе форм количества.
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
Похоже на хак!