@unixwz

Как правильно связать две формы моделей в Django?

Здравствуйте, я изучаю django и мне необходимо сделать следующее: У меня есть две модели Seller и Goods, они связанны между собой с помощью ForeignKey, вот код:

class Seller(models.Model):
    title = models.CharField('Название магазина', max_length=255)
    url = models.URLField('Ссылка на магазин')
    internal_url = models.CharField('Внутренняя ссылка', max_length=255)
    description = models.TextField('Описание', max_length=5000)
    rate = models.IntegerField('Рейтинг', default=0)
    publish_date = models.DateField('Дата добавления', auto_now_add=True)
    display = models.BooleanField('Отображение на главной', default=False)
    email = models.EmailField('E-Mail администратора', default='')


class Goods(models.Model):
    seller = models.ForeignKey(Seller, on_delete=models.CASCADE)
    name = models.CharField('Что вы продаёте?',  max_length=255)


Всё замечательно, есть модель Seller - продавец и модель Goods - это товары продавца (для каждого продавца их может быть сколько угодно).

Мне нужно сделать форму на сайте (не в админке), для добавления продавца, для этого я генерирую форму с помощью ModelForm, вот этим кодом у меня генерируется форма:
class SellerForm(ModelForm):
    class Meta:
        model = Seller
        fields = ['title', 'url', 'description', 'email']


class GoodsForm(ModelForm):
    class Meta:
        model = Goods
        fields = ['name']

Вернее сказать, генерируется одна форма но в неё включается поля ввода для Seller и поле ввода (name), для Goods. У меня возникает трудность в том, как мне правильно реализовать эту форму? Как я понял мне нужно как-то связать эти две формы, ведь модели связанны между собой, наверное можно связать и формы для этих моделей, что-бы в форме добавление продавца было поле ввода товаров (товары заполняются в виде хэш-тега как на Toster т.е на выходе у нас массив строк - товаров) и затем эти товары мне нужно добавлять в БД, каждый товар отдельно.

Как это правильно и максимально удобно реализовать?
  • Вопрос задан
  • 501 просмотр
Решения вопроса 1
flygrounder
@flygrounder
Python/Django
Раз это просто теги, то можно реализовать, используя батарейку django-taggit. Вместо модели Goods добавить TaggableManager в Seller, а в форму добавить TagField из той же библиотеки.
P.S.
Вот небольшой мануал ilnurgi1.ru/docs/django/contrib/django-taggit.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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