Доступ к связанным полям через inline_formset - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь просмотреть (не редактировать) связанные поля во встроенном наборе форм.В этом случае я хочу отобразить стоимость товара в наборе форм количества.

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

Похоже на хак!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...