У меня есть поле category_name
которое является unique
и я проверяю значение формы для этого поля после отправки формы из django admin.
admin.py
-
from django.core.exceptions import ValidationError
class categoryAdmin(admin.ModelAdmin):
list_display = ('category_name','module_name')
def add_view(self, request, extra_content=None):
self.form = CategoryUploadForm
return super(categoryAdmin, self).add_view(request)
def change_view(self, request, object_id, extra_content=None):
self.form = CategoryManageForm
return super(categoryAdmin, self).change_view(request, object_id)
def save_model(self, request, obj, form, change):
if not change:
category_name, module_names = \
self.handle_uploaded_file(request.FILES['category_file'])
else:
category_name = request.POST['category_name']
module_names = request.POST['module_name']
if category_name and Category.objects.filter(category_name=category_name).exists():
raise forms.ValidationError('This category is already in the database. Please supply a different category.')
return category_name
Ошибка is--
ValidationError at /admin/accounts/category/add/
['This category is already in the database. Please supply a different category.']
Любая помощь высоко ценится. Заранее спасибо.
Вы не должны этого делать. Если category_name должно быть уникальным, установите unique
атрибут в поле модели.
В более общем плане проверки проверки относятся к форме или модели, а не к классу admin.
unique=true
устанавливается на поле в модели.category_name = models.CharField(max_length=150, blank=False, null=True, default="", unique=True)
Я просто хотел отобразить сообщение об ошибке. Я постараюсь проверить это в форме. Спасибо.