Вывод в шаблон сообщения о наличии или отсутствии товара в БД
Новичок. Как правильнее сделать вывод сообщения об отсутствии товара в БД при вводе в datalist?
Сейчас это работает через try except. Но что-то мне подсказывает что можно применить валидатор или что-то подобное..
views.py
from django.shortcuts import render
from mainapp.forms import MainForm
from mainapp.models import CableCommonModel
from django.core.exceptions import ObjectDoesNotExist
def main(request):
article_list = CableCommonModel.objects.all()
form = MainForm(data_list=article_list)
error_message = ''
article = ''
if request.method == 'POST':
ff = MainForm(request.POST)
article = request.POST.get('article2')
try:
r = CableCommonModel.objects.get(article=article)
except ObjectDoesNotExist:
error_message = 'Артикул не существует'
print(error_message)
else:
error_message = ''
content = {
'error_message': error_message,
'form': form,
}
forms.py
class MainForm(forms.Form):
article2 = forms.CharField(
required=True,
label='Артикул',
)
def __init__(self, *args, **kwargs):
_article = kwargs.pop('data_list', None)
super(MainForm, self).__init__(*args, **kwargs)
self.fields['article2'].widget = ListTextWidget(
data_list=_article, name='article')
index.html
{% load crispy_forms_filters %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form|crispy }}
{{ error_message | as_crispy_errors }}
<input type="submit" class="btn btn-primary btn-block" value="проверить">
</form>