Джанго шаблон множественный для цикла - PullRequest
1 голос
/ 10 марта 2019

У меня есть кортеж, который содержит несколько цветов и их коды:

color_list = (
    ('#CD5C5C', 'Indian Red'),
    ('#F08080', 'Light Coral'),
    ('#FA8072', 'Salmon'),
        ................
   )

а это модель:

class ColorList(models.Model):
    color = models.CharField(choices=color_list, max_length=10)

class Product(models.Model):
    color_list = models.ManyToManyField(ColorList)

вид:

def product_edit(request, pk):
    product = get_object_or_404(Product.objects.prefetch_related('color_list'), pk=pk)
    context = {'product': product,'color_list': color_list}
    return render(request, 'admin/product/product_edit.html', context)

Теперь я хочу отредактировать ранее сохраненные данные в шаблоне, используя форму:

<div class="form-group">
     <label><strong>Color List</strong></label>
      <select name="color_list" class="form-control selectpicker" multiple  data-live-search="true" >
          {% for key, value in color_list %}
                {% for pro_color in product.color_list.all %}
                     <option value="{{ key }}" {% if pro_color.color == key %} selected {% endif %}>
                       {{ value }}
                      </option>
                 {% endfor %}
           {% endfor %}
        </select>
</div>

Я хочу показать ранее выбранный цвет с другими вариантами цвета, но используя этот код шаблона, он генерирует несколько дубликатов <options>. Так что проблема в том, как я могу использовать несколько для цикла в шаблоне с предварительно выбранным цветом <options>?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Для редактирования связанных вопросов см. Шаблон администратора Django> Редактировать пользователя

Вероятный URL будет: http://localhost:8000/admin/auth/user/{id}/change/

Здесь у них есть столбец «Разрешения», который имеет значение Select Many, и он также сохраняет свое значение при обновлении.

0 голосов
/ 10 марта 2019

Причина, по которой ваши цвета дублируются, заключается в том, что вы вложили два цикла без необходимости, чтобы получить пары ключ / значение.Вы можете использовать .get_FOO_display() вместо.

<div class="form-group">
     <label><strong>Color List</strong></label>
      <select name="color_list" class="form-control selectpicker" multiple  data-live-search="true" >
                {% for pro_color in product.color_list.all %}
                     <option value="{{ pro_color.get_color_display }}" {% if pro_color.color == color_list.color %} selected {% endif %}>
                       {{ pro_color.color }}
                      </option>
                 {% endfor %}
        </select>
</div>

https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display

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