Django Inline Formset - возможно ли следовать внешнему ключу назад?

bdoubleu спросил: 13 октября 2017 в 06:38 в: python

Я довольно новичок в django, поэтому я прошу прощения, если у этого есть очевидный ответ.

Допустим, у вас есть следующие три модели:

models.pyclass Customer(models.Model):
    name = models.CharField()
    slug = models.SlugField()class Product(models.Model):
    plu = models.Charfield()
    description = models.Charfield()class Template(models.Model):
    customer = models.ForeignKey(Customer)
    product = models.ForeignKey(Product)
    price = models.DecimalField()

встроенный набор форм будет выглядеть примерно так:

TemplateFormSet = inlineformset_factory(Customer, Template, extra=0, 
                fk_name='customer', fields=('price'))

Можно ли следовать внешнему ключу Product набора форм в обратном направлении, чтобы вы могли отображать поля plu и description в одной таблице?

Например, что-то вроде этого:

<table>
  <tbody>
  {% for obj in customer.template_set.all %}
    <tr>
      <td>{{ obj.product.plu }}</td>
      <td>{{ obj.product.description }}</td>
      <td>{% render_field formset.form.price class="form-control form-control-sm" %}</td>
    </tr>
  {% endfor %}
  </tbody>
</table>

Поля набора форм отображаются с HTML выше, но данные из привязанного экземпляра формы не отображаются, и я не могу сохранить путем редактирования пустых полей.

Я также попробовал ниже, но каждый набор форм повторяется для каждого объекта (для x наборов форм есть x x строк):

<tbody>
{% for obj in customer.template_set.all %}
  {% for form in formset %}
    <tr>
      <td>{{ obj.product.plu }}</td>
      <td>{{ obj.product.description }}</td>
      <td>{% render_field form.price class="form-control" %}</td>
    </tr>
  {% endfor %}
{% endfor %}
</tbody>

В основном я пытаюсь перейти от верхней части изображения к нижней


0 ответов