Django, как создать форму для добавления / редактирования объекта со ссылками m2m? - PullRequest
1 голос
/ 26 мая 2010

Добрый день! Есть три сущности. Product, Option и ProductOption. Продукт имеет ссылку многие ко многим на Option через ProductOption. Подскажите пожалуйста как создать для Product'а форму добавления / редактирования с этими опциями (не на странице администрирования)?

Если просто вывести {{product.options}} - будет SelectBox с множественным выбором. И мне нужно, чтобы это были формы. У каждого варианта есть описание и карта. Чтобы можно было их ввести.

Внешность для себя я представляю как:

Флажок с названием опции в метке, ниже описание опции. И так строки 10.

Прочитав материалы в интернете, понял, что в этом случае необходимо использовать формы. Но здесь есть еще одна проблема:

В момент редактирования продукта необходимо показать все возможные варианты, а не только те, которые с ним когда-то были сохранены. То есть сохраненный (и заполненный) плюс еще не привязанный к этой модели. Подскажите пожалуйста где копать.

Спасибо.

1 Ответ

0 голосов
/ 27 мая 2010

Это мои models.py.

class Section(models.Model):
    title = models.CharField(max_length=250)

    def __unicode__(self):
        return self.title

    class Meta:
        pass


class Option(models.Model):
    title = models.CharField(blank=True, null=True, max_length=250)
    section = models.ManyToManyField(Section)

    def __unicode__(self):
        return self.title

    class Meta:
        pass


class Card(models.Model):
    title = models.CharField(max_length=250)
    section = models.ForeignKey(Section)
    options = models.ManyToManyField(Option, through='CardOption')

    def __unicode__(self):
        return self.title

    class Meta:
       pass


class CardOption(models.Model):
    card = models.ForeignKey(Card)
    option = models.ForeignKey(Option)
    description = models.TextField(blank=True, null=True, max_length = 300)

    class Meta:
        pass
...