2017-09-07 40 views
-1

カテゴリフィールドcategory_nameuniqueです。django adminからフォームが送信された後、そのフィールドのフォーム値を検証しています。Djangoのデータベースに値が存在するかどうかを調べる

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 

エラー

ValidationError at /admin/accounts/category/add/ 
['This category is already in the database. Please supply a different category.'] 

is--すべてのヘルプは高く評価されています。前もって感謝します。

答えて

0

これは絶対に行わないでください。 category_nameが一意である必要がある場合は、モデルのフィールドにunique属性を設定します。

より一般的には、検証チェックはフォームまたはモデルに属し、管理クラスには属しません。

+0

モデルのフィールドに 'unique = true'が設定されています.'category_name = models.CharField(max_length = 150、空白= False、null = True、デフォルト=" "、一意= True)'エラーメッセージを表示します。私はフォーム内でそれを検証しようとします。ありがとうございました。 –

+1

この一意の属性が設定されている場合、フォームは*既に*行います。 –

+0

フォームにエラーメッセージが表示されていません。フォームはxmlファイルをアップロードしています。ファイルが解析されると、category_nameがsave_modelに返されます。 –

関連する問題