Задать вопрос
@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)])


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

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

Похожие вопросы