Как создать форму с несколькими записями?
У меня есть модель 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"))