Задать вопрос
@BashAnka
Начинающий специалист

Как создать форму в Django 1.11, чтобы можно было добавлять значение в поле с типом ForeignKey?

есть 2 модели.

class Category(models.Model):
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

def default_vendor_code():
    return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))

class Product(models.Model):
    title = models.CharField(max_length=200, verbose_name="Название товара")
    category = models.ForeignKey(Category, verbose_name="Категория", on_delete=models.SET_NULL, null=True)
    vendor_code = models.CharField(max_length=20, verbose_name="Артикул", default=default_vendor_code)
    image = models.ImageField(upload_to="catalog/", verbose_name="Изображение", default="catalog/default.png")
    width = models.PositiveIntegerField(verbose_name="Ширина", help_text="Указывать в мм")
    height = models.PositiveIntegerField(verbose_name="Высота", help_text="Указывать в мм")
    length = models.PositiveIntegerField(verbose_name="Длина", help_text="Указывать в мм")

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('product-detail', args=[str(self.id)])


Как создать форму, чтобы можно было не только выбирать категорию товара, но и добавлять ее?
  • Вопрос задан
  • 87 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
Переопределите метод __init__ формы, добавьте к полю category вариант типа "Добавить новую". На странице javascript'ом выводите рядом ещё один input. В методе clean формы проверяйте, если input введён, создавайте категорию и создавайте объект Product с свежесозданной категорией.
По умолчанию можно использовать ModelForm, но её внутренности придётся писать руками.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽