Python 如何在复选框中保存标记?
有人会说,如何在Django中创建如下图所示的形式 我有带字段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
的型号产品
可查看
。在表格中,我想显示所有带有字段的产品是可视的
。用户可以选择复选框并更改是否可见
字段的值。换句话说,使产品可见或不可见。我对我的表单中的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”的产品中保存复选框中的标记?你对此有什么想法吗?