0

私は次のようなフォームを持っています:

class ThingSelectionForm(forms.Form):
    things = forms.ModelChoiceField(
        queryset=Product.objects.filter(product=my_product),
        widget=forms.RadioSelect,
        empty_label=None,
    )

my_product私の質問は、ページの読み込み時に変数を渡すにはどうすればよいですか? カスタム__init__メソッドを作成する必要がありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

3

はい、 initをオーバーライドできます

    class ThingSelectionForm(forms.Form):
        things = forms.ModelChoiceField(
            widget=forms.RadioSelect,
            empty_label=None,
        )
       def __init__(self, *args, **kwargs):
              my_prod = kwargs.pop('my_prod), None
              super(...)
              self.fields['things'].queryset = Product.objects.filter(product=my_prod),

#view

form = ThingSelectionForm(my_prod = my_prod)
于 2012-12-05T21:55:11.160 に答える
1

私はちょうど今日このようなことをしていました。これは役に立ちました。デイブからの返事です

models.py

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True)

view.py

form  = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)

私は filter(foo=bar) タイプのクエリを使用しました。

次に、forms.py で

made_at = forms.ModelChoiceField(queryset=Factory.objects.all())
于 2012-12-06T06:28:50.127 に答える