2017-05-03 6 views
0

누군가 장고에서 아래 그림과 같은 양식을 만드는 방법을 말할 수 있습니까?체크 박스에 체크 표시를 저장하는 방법은 무엇입니까?

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

생각 뭐 당신이 사용하고자하는 것은 CheckboxSelectMultiple의 위젯을 가진 형태로 ModelChoiceField입니다.

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

은 자세한 내용은이 게시물을 참조 :

Django ChoiceField populated from database values

+0

안녕하세요이 같은 검색어 세트를 구축 할 수 있도록

는 ModelChoiceField에 대한 검색어 세트는 필수 인수입니다! 내 게시물을 다시 확인할 수 있습니까? 양식 및보기 코드를 추가합니다. 모든 제품을 형식으로 표시 한 다음 뷰에서 사용자가 클릭 한 제품의 is_visable 값을 변경합니다. 하지만 'is_visable = True'인 제품의 체크 박스에 마크를 저장하는 방법을 이해하지 못합니다. 그것에 대한 아이디어가 있습니까? –