0

ハンターが狩猟レポートを書くことができるセクションをサイトに作成しています。

このセクションでは、「ウィッシュ リスト」(狩りたい動物)と「バッグ リスト」(狩りをした動物)から選択できます。

フォームを作成しましたが、いくつかのフィルターを使用して、ユーザー関連のデータのみを抽出する必要があります。

TemplateSyntaxError が原因で、forms.py などで問題が発生しています。

私が欲しいものの基本は、トロフィーのみをフィルタリングする「バッグリスト」であり、ユーザーは自分自身を選択する必要はありませんが、すでに通過しています。つまり、ユーザーの選択メニューはありません。

私のforms.pyは次のようになります

class HuntingReportForm(ModelForm):
    date_travel_started = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2012)))
    date_travel_ended = forms.DateField(widget=extras.SelectDateWidget(years=range(1970,2012)))
    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.user = kwargs.pop('user', None)
        self.validate = kwargs.pop('validate', False)
        super(HuntingReportForm, self).__init__(*args, **kwargs)

        self.fields['bag_list'] = forms.ModelMultipleChoiceField(queryset=Trophies.objects.filter(user = user), widget=FilteredSelectMultiple("verbose name", is_stacked=False), required=False)
        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', 'date_travel_started', 'date_travel_ended', 'outfitter', 'wish_list', 'bag_list','report', 'user']

あなたの助けは大歓迎です。

4

1 に答える 1

1

最初にarg__init__を追加することにより、フォームのメソッドの署名をオーバーライドしました。フォームを初期化するすべての場所を変更して、前userに確実に渡す必要があります。userrequest.POST

または、できればuser、kwargs dictから取得したコメントアウトされたコードに戻りuser、メソッドシグネチャ内のへの参照を削除します。

于 2011-01-18T10:00:26.670 に答える