2017-05-03 7 views
0

Djangoの下の図のようなフォームを作成するにはどうすればいいですか?チェックボックスにマークを保存する方法は?

enter image description here

私はフィールドis_visableでモデルProductを持っています。フォームでは、すべての製品をフィールドis_visableで表示したいと考えています。ユーザーはチェックボックスを選択し、is_visableフィールドの値を変更できます。言い換えれば、製品を見えるか見えないものにする。私はMultipleChoiceFieldについてのものですが、私の場合は正しいとは確信していません。

models.py:

class Product(models.Model): 
    symbol = models.CharField(_('Symbol'), max_length=250) 
    name = models.CharField(_('Name'), max_length=250) 
    is_visible = models.BooleanField(default=False) 

forms.py:

class ProductForm(forms.ModelForm): 
    product = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Product.objects.all()) 

はviews.py:

if request.method == 'POST': 
    form = ProductForm(data=request.POST) 
    if form.is_valid(): 
     ids = form.cleaned_data.get('product') # Example: ['pk', 'pk'] 
     for id in ids: 
      product = Product.objects.get(pk=id) 
      product.is_visible = True 
      product.save() 

答えて

0

私は義和を考えますあなたが使用したいと思うのはModelChoiceFieldで、フォームにはCheckboxSelectMultipleのウィジェットがあります。

Django ChoiceField populated from database values

+0

こんにちは:詳細については、この記事を参照してください

visible_products = Product.objects.filter(is_visible=True) product_field = forms.ModelChoiceField(queryset=visible_products, widget=CheckboxSelectMultiple() 

:あなたはこのようなクエリセットを構築することができるように

ModelChoiceFieldためのクエリセットは、必須の引数です!私のポストをもう一度調べることはできますか?私はフォームとビューのコードを追加します。私はフォームですべての製品を表示し、ビューでユーザーがクリックした製品のis_visable値を変更します。しかし、私は、 'is_visable = True'を持つ製品のチェックボックスにマークを保存する方法を理解していませんか?あなたはそれについて何か考えていますか? –

関連する問題