2011-12-22 4 views
2

사용자 정의 유효성 검증이있는 admin 양식이 있습니다. 일부 양식 필드는 list_editable을 통해 목록보기에 표시됩니다. 목록보기를 통해이 필드를 수정할 때 사용자 지정 유효성 검사가 실행되지 않습니다. 그러나 일반 변경 양식을 사용할 때 작동합니다. 따라서 질문은 "change_list"페이지를 통해 변경된 사항을 어떻게 검증해야 하는가입니다.list_editable 필드에 대한 admin의 사용자 정의 유효성 확인

코드는

class ProjectForm(ModelForm): 
    class Meta: 
     model = Project 
    def clean(self): 
     print "validating!" 
     data = self.cleaned_data 
     if data.get('on_frontpage') and not data.get('frontpage_image'): 
      raise ValidationError('To put a project on the frontpage you must \ 
           specify a "Frontpage image" first.') 
     return data 

class ProjectAdmin(AdminImageMixin, DisplayableAdmin, SortableAdmin): 
    form = ProjectForm 
    ... 
    list_editable = ("status", "on_frontpage",) 
    list_display = ("title", "status", "on_frontpage") 

감사가 명확하게 수 있습니다!

+0

이 항목에 대한 업데이트가 있습니까? – fastmultiplication

+0

귀하의 의견은 한 달 전부터 나온 것입니다,하지만 방금이 질문에 대답했습니다. –

답변

4
+0

무엇을 의미합니까? 예를 들어 줄 수 있습니까? – sha256

+1

첫 번째 - 올바른 행으로 이동 링크를 편집했습니다. 나는 1 년 넘게 장고를하지 않았으므로 조금 녹슬었다. 그러나 양식을 필드에 매핑하는 두 가지 기능이 있습니다.이 기능은 "get_changelist_form"및 "get_changelist_formset"입니다. 기본적으로 일반 폼을 반환합니다. 당신은 아마 당신 자신의 형식을 대체하기 위해 그들과 어울릴 수 있습니다. –

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나중에 직접 발견했지만 알려주지 않았습니다. – sha256

0

오버라이드 ModelAdmin.get_changelist_formset(request, **kwargs) 방법 : 자세한 내용은

from django.forms import BaseModelFormSet 

class MyAdminFormSet(BaseModelFormSet): 
    pass 

class MyModelAdmin(admin.ModelAdmin): 
    def get_changelist_formset(self, request, **kwargs): 
     kwargs['formset'] = MyAdminFormSet 
     return super().get_changelist_formset(request, **kwargs) 

Django admin site documentation을 확인하십시오 하나는 ModelAdmin에서 재정의 "get_changelist_formset"방법으로 "change_list"페이지에서 사용하는 양식을 지정할 수 있습니다.

관련 문제