2010-11-29 8 views
5

ユーザーが管理者の場合、ユーザーを削除できないような検証を実行しようとしています。したがって、管理者であり、削除対象としてマークされているユーザーがいる場合は、エラーを確認してください。django-adminインラインフォームの削除を検証する

これはif bool(delete_checked):条件がtrueを返すとifブロック内のものが実行されますが、何らかの理由でこの検証エラーが発生されることはありませんModelForm

class UserGroupsForm(forms.ModelForm): 
    class Meta: 
     model = UserGroups 

    def clean(self): 
     delete_checked = self.fields['DELETE'].widget.value_from_datadict(
      self.data, self.files, self.add_prefix('DELETE')) 
     if bool(delete_checked): 
      #if user is admin of group x 
      raise forms.ValidationError('You cannot delete a user that is the group administrator') 

     return self.cleaned_data 

私のインラインです。誰かがなぜ私に説明してもらえますか?

いっそこれを行うには、別の良い方法がありますなら、私は

答えて

6

を教えてください私が見つけた解決策はModelForm

class UserGroupsInlineFormset(forms.models.BaseInlineFormSet): 

    def clean(self): 
     delete_checked = False 

     for form in self.forms: 
      try: 
       if form.cleaned_data: 
        if form.cleaned_data['DELETE']: 
         delete_checked = True 

      except AttributeError: 
       pass 

     if delete_checked: 
      raise forms.ValidationError(u'You cannot delete a user that is the group administrator') 
の代わりに InlineFormSetcleanにしました