Проверка наличия значения в базе данных в Django

-1

У меня есть поле 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.']

Любая помощь высоко ценится. Заранее спасибо.

Теги:
validation

1 ответ

0

Вы не должны этого делать. Если category_name должно быть уникальным, установите unique атрибут в поле модели.

В более общем плане проверки проверки относятся к форме или модели, а не к классу admin.

  • 0
    unique=true устанавливается на поле в модели. category_name = models.CharField(max_length=150, blank=False, null=True, default="", unique=True) Я просто хотел отобразить сообщение об ошибке. Я постараюсь проверить это в форме. Спасибо.
  • 1
    Форма уже сделает это, если этот уникальный атрибут установлен.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню