@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)])


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

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

Войти через центр авторизации
Похожие вопросы