аватар question@mail.ru · 01.01.1970 03:00

Выпадающий список в django

Пишу простенький интернет-магазин на Django 1.9. Имеются следующие модели:

tovar/models.py

class Color(models.Model):    color = models.CharField(verbose_name=""Цвет"", max_length=25, blank=False, null=True)    code = models.CharField(verbose_name=""Код цвета"", max_length=8, blank=True, null=True)class Tovar(models.Model):    color = models.ManyToManyField(Color, blank=True)

cart/models.py

class Cart(models.Model):    color = models.CharField(verbose_name=""Цвет"", max_length=25, blank=False, null=True)

В таблице Cart приложения cart указан список цветов определённого товара которые должны браться из таблицы Tovar (поля ManyToManyField).

От сюда вопрос: как мне написать соответствующую форму поля color модели Tovar? Если использовать виджет SelectMultiple то как реализовать вывод ManyToManyField?

аватар answer@mail.ru · 01.01.1970 03:00

Можно в шаблоне с помощью цикла в тегах <select><option> разместить нужную информацию из полей, а затем подключить для красивого мультиселекта.

<select class=""yourclass"" multiple="""" name=""youame"" required="""" id=""yourselectid"">   {% for m in model_context %}      <option value=""{{ m.somevalue }}"">{{ m.somename }}</option>  {% endfor %}</select>

В вашем кастомном .js файле можно манипулировать этой штукой, обращаясь к параметру id тега <select>.

$(document).ready(function(){    $('#yourselectid').multiselect({        columns: 1,        placeholder: 'Какая-то надписька для поля',        search: false,        selectAll: true    });});

Передавать инфу из этой штуки можно по нажатию на кнопку, её надо в HTML создать.

$(document).ready(function() {    $(""#send-button"").click(function() {        var fdata = $(""#yourForm"").serialize();        $.ajax({            url: ""ajax_calls/your_path/"",            type: ""POST"",            dataType: ""json"",            data: fdata,            success : function(json) {                alert(""Successfully sent the URL to Django"");            },            error : function(xhr,errmsg,err) {                alert(""Could not send URL to Django. Error: "" + xhr.status + "": "" + xhr.responseText);            }        });    });});

Да, при такой сх��ме можно не создавать форму вообще. Вся магия происходит в views.py и custom.js.

Последние

Похожие