Никак не получается в валидации формы сделать запрос к таблице(другой модели) в базе, отфильтровать его и сверить введеное значение в поле формы с ним.
Значит есть модели:
**class tabako_brands**(models.Model):
tabako_brands_title = models.CharField(verbose_name="Производитель", max_length=200)
**class tabako_titles**(models.Model):
tabako_titles_id = models.AutoField(primary_key=True)
tabako_titles_brand = models.ForeignKey(tabako_brands, verbose_name="Производитель")
tabako_titles_title = models.CharField('Название', max_length=200)
**class buy_tabako**(models.Model):
buy_tabako_brand = models.ForeignKey(tabako_brands, verbose_name="Производитель")
buy_tabako_title = models.ForeignKey(tabako_titles, verbose_name="Название")
buy_tabako_type = models.CharField(choices=tabako.types, default=50, verbose_name="Фасовка", max_length=4)
buy_tabako_quantity = models.IntegerField(verbose_name="Количество")
buy_tabako_price = models.IntegerField(verbose_name="Цена", null=True)
buy_tabako_allprice = models.IntegerField(editable=False)
buy_tabako_cart = models.ForeignKey(buy_cart, blank=True, null=True, editable=False)
А вот форма по модели, и придуманная мной валидация на соответствие Brand к Title.
class buy_tabako_form(forms.ModelForm):
class Meta:
model = buy_tabako
fields = '__all__'
def clean(self):
cleaned_data = super(buy_tabako_form, self).clean()
brand = cleaned_data.get("buy_tabako_brand")
title = cleaned_data.get("buy_tabako_title")
if brand and title:
goodtl = tabako_titles.objects.filter(tabako_titles_title__startswith=title).get(tabako_titles_brand_id=brand)
if brand != goodtl:
raise forms.ValidationError("Вашему Бренду не соответствует Тип")
Есть форма на сайте, по которой добавляется модель buy_tabako, не могу сделать так, чтобы при отправке формы, проверялось следующее:
В зависимости от выбранного Бренда, проверяется выбранный Тип. Так как поля между ними зависимы проблем быть не должно. Но у меня появляется ошибка "tabako_titles matching query does not exist."
В принципе логично, так как в модели(по которой построена форма), нет такого поля ( поля в базе).
А нужно, чтобы при добавлении модели по форме, происходил запрос в базу данных в таблицу модели tabako_titles**(models.Model), там по выбранному типу в форме(2 поле), фильтровал значение, убирал лишние значение типов, а далее выводил значение, имеющие tabako_titles_brand_id = равный первому полю. То есть в итоге получится сверка выбранного типа в форме и этот же тип(если соответствует) из базы.
Кто-нибудь сталкивался с таким? Как отправить запрос в базу таблицы другой модели, валидируя другую модель?