Как создать форму с несколькими записями?

У меня есть модель Product с названием продукта и модель ProductCosts со значением стоимости, которая связана с моделью Product.

В настоящее время у меня есть форма для ввода нового продукта и другая форма для ввода затрат, где я могу выбрать продукт и добавить затраты к этому новому продукту.

А есть ли способ, как создать форму, которая будет показывать названия продуктов, у которых отсутствуют затраты в одной колонке, а во второй колонке пустые поля для ввода затрат на продукт, и там будет x строк, основанных на количестве продуктов, у которых в настоящее время нет затрат?

(Существует также другой файл с количеством произведенных продуктов в ProductCosts, но я проигнорировал его, чтобы упростить свой вопрос)

Мой models.py:

class Product(models.Model):
    name = models.CharField("Product", max_length=150)
    ...

class ProductCosts(models.Model):
    product = models.OneToOneField(Product, on_delete=models.CASCADE)
    costs = models.DecimalField("Costs", max_digits=10, decimal_places=2)
    produced = models.IntegerField("Produced", null=True, blank=True)
    ...

form.py

class ProductCostsForm(ModelForm):

    class Meta:
        model = models.ProductCosts
        fields = ["product", "costs", "produced"]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Div(
                Div("product", css_class="col-12"),
                css_class="row",
            ),
            Div(
                Div("costs", css_class="col-6"),
                Div("produced", css_class="col-6"),
                css_class="row",
            ),
            Div(
                Div(HTML('<hr>'), css_class="col-12"),
                css_class="row",
            ),
        )
        self.helper.form_method = 'post'
        self.helper.add_input(Submit('submit', 'Submit', css_class="col-4 btn btn-dark text-center justify-content-center"))

Вернуться на верх