Я создаю страницу для добавления товаров в интернет-магазин пользователем, и у меня возникают проблемы с отображением ValidationError
в моем шаблоне. ValidationError
повышается, если выбранная категория не является самой определенной категорией для выбора. Чтобы выбрать категорию, пользователь должен пройти через зависимый комбинированный список со списком, где вы начинаете с одного комбинированного списка для основной категории, и как только вы выбираете основную категорию, появляется другой <select>
для выбора подкатегории и так далее, пока самая внутренняя подкатегория не будетвыбран. В зависимости от выбранной категории отображается другая ModelForm. category
- это поле в моей базовой модели Продукта (от которого наследуются другие модели, такие как Book или Shoes), и оно не указано во внутренних полях Meta-класса ModelForms, поэтому у меня не может быть метода clean_category
на моемModelForms.
Вот мой взгляд:
@login_required
def product_create_view(request):
if request.method == 'POST':
main_category = request.session.get('main_category')
create_product_form = mappings[main_category](request.POST)
if create_product_form.is_valid():
obj = create_product_form.save(commit=False)
category = request.session.get('category')
if Category.objects.get(id=category).is_leaf_node():
obj.category = Category.objects.get(id=category)
obj.save()
else:
raise forms.ValidationError('Please select most specific category.')
return render(request, 'products/product_create.html', {
'categories': Category.objects.filter(parent=None)
})
Как отобразить ошибку ValidationError в шаблоне, т.е. как я могу получить ValidationError
в моем {{ field.errors }}
? В настоящее время я вижу трассировку стека.