2010-11-26 5 views
0

検証でm2mリクエストを処理するフォームがあります。私はそれだけでいくつかのフィールドがwerenと言っページに戻って私を投げ続ける次のコードでただし、フォームが検証して保存するようです全体セクションを削除するとDjango super __init__ m2mフォームが検証されないようにします

class HuntingReportForm(ModelForm): 
    date_travel_started = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2010))) 
    date_travel_ended = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2010))) 
    wish_list = forms.ModelMultipleChoiceField(queryset=Specie.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False) 
    bag_list = forms.ModelMultipleChoiceField(queryset=Trophies.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False) 

class Meta: 
    model = HuntingReport 
    exclude = ['user',] 

def __init__(self, user, *args, **kwargs): 
    self.validate = kwargs.pop('validate',False) 
    super(HuntingReportForm, self).__init__(*args, **kwargs) 

    users = User.objects.filter(userprofile__outfitter=True) 
    self.fields['outfitter'].choices = [('', '')] + [(user.pk, user.get_full_name()) for user in users] 
    self.fields.keyOrder = ['title', 'report', 'date_travel_started', 'date_travel_ended', 'wish_list', 'bag_list', 'outfitter'] 

を次のように

私の形に見えますたとえそうであったとしても、満たされていません。

アイデア?

答えて

1

あなたはビューを表示しませんが、おそらく通常のform = HuntingReportForm(request.POST)でフォームをインスタンス化しています。残念ながら、フォームの__init__メソッドのシグネチャを、最初の位置引数としてuserを期待して変更しました。データは渡されません。userをkwargsに移動し、validate引数と同じに扱う必要があります。

def __init__(self,*args, **kwargs): 
    user = kwargs.pop('user', None) 
    self.validate = kwargs.pop('validate', False) 
    super(HuntingReportForm, self).__init__(*args, **kwargs) 
+0

ありがとう、私はそれを試してみようと結果を知ってみましょう – ApPeL

+0

ありがとう@ダニエル、それはトリックをした、ありがとう✓ – ApPeL

関連する問題