Python 如何在复选框中保存标记?

Python 如何在复选框中保存标记?,python,django,python-3.x,django-forms,django-1.10,Python,Django,Python 3.x,Django Forms,Django 1.10,有人会说,如何在Django中创建如下图所示的形式 我有带字段的型号产品可查看。在表格中,我想显示所有带有字段的产品是可视的。用户可以选择复选框并更改是否可见字段的值。换句话说,使产品可见或不可见。我对我的表单中的multipleechoicefield很感兴趣,但不确定它在我的情况下是否正确 型号。py: class Product(models.Model): symbol = models.CharField(_('Symbol'), max_length=250) na

有人会说,如何在Django中创建如下图所示的形式

我有带字段
的型号
产品
可查看
。在表格中,我想显示所有带有
字段的产品是可视的
。用户可以选择复选框并更改
是否可见
字段的值。换句话说,使产品可见或不可见。我对我的表单中的
multipleechoicefield
很感兴趣,但不确定它在我的情况下是否正确

型号。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)
class ProductForm(forms.ModelForm):
    product = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Product.objects.all())
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()
forms.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)
class ProductForm(forms.ModelForm):
    product = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Product.objects.all())
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()
视图。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)
class ProductForm(forms.ModelForm):
    product = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Product.objects.all())
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()

我认为你想要使用的是一个在你的表单中有一个小部件的

ModelChoiceField的查询集是必需的参数,因此可以按如下方式构建查询集:

visible_products =  Product.objects.filter(is_visible=True)
product_field = forms.ModelChoiceField(queryset=visible_products,
                                 widget=CheckboxSelectMultiple()
有关更多详细信息,请参阅本文:


你好!你能再看看我的帖子吗。我添加表单和视图代码。我在表单中显示所有产品,然后更改是用户在视图中单击的产品的可见价值。但我不明白如何在带有“is_visable=True”的产品中保存复选框中的标记?你对此有什么想法吗?