在 django ModelForm 中动态添加字段
Add fields dynamically in django ModelForm
我的模型
class MyModel(models.Model):
remark = models.CharField(max_length=120)
data_1 = models.BooleanField(default=False)
data_2 = models.BooleanField(default=False)
data_3 = models.BooleanField(default=False)
data_4 = models.BooleanField(default=False)
表格
class MyModelForm(forms.ModelForm):
CHOICES= (("data_1", "data_1"),
("data_2", "data_2"),
("data_3", "data_3"),
("data_4", "data_4"),)
my_choice = forms.MultipleChoiceField(choices=CHOICES, widget=forms.CheckboxSelectMultiple())
class Meta:
model = MyModel
fields = ["remark"]
查看
class MyView(UpdateView):
model = MyModel
form_class = MyModelForm
template_name = "mytemplate.html"
def form_valid(self, form):
selected_choices = self.request.POST.getlist("my_choice")
for item in selected_choices:
form.instance.item = False
form.instance.remarks = form.cleaned_data["remark"]
form.instance.save()
return super(MyView, self).form_valid(form)
我想要的是,我想通过选中复选框来选择选定的选项并将其值更改为 False,剩下的必须是 unaffected.Please 帮助....
这道题比较难懂,好像跟表单加字段没什么关系。但是我认为你正在寻找setattr
:
for item in selected_choices:
setattr(form.instance, item, False)
我的模型
class MyModel(models.Model):
remark = models.CharField(max_length=120)
data_1 = models.BooleanField(default=False)
data_2 = models.BooleanField(default=False)
data_3 = models.BooleanField(default=False)
data_4 = models.BooleanField(default=False)
表格
class MyModelForm(forms.ModelForm):
CHOICES= (("data_1", "data_1"),
("data_2", "data_2"),
("data_3", "data_3"),
("data_4", "data_4"),)
my_choice = forms.MultipleChoiceField(choices=CHOICES, widget=forms.CheckboxSelectMultiple())
class Meta:
model = MyModel
fields = ["remark"]
查看
class MyView(UpdateView):
model = MyModel
form_class = MyModelForm
template_name = "mytemplate.html"
def form_valid(self, form):
selected_choices = self.request.POST.getlist("my_choice")
for item in selected_choices:
form.instance.item = False
form.instance.remarks = form.cleaned_data["remark"]
form.instance.save()
return super(MyView, self).form_valid(form)
我想要的是,我想通过选中复选框来选择选定的选项并将其值更改为 False,剩下的必须是 unaffected.Please 帮助....
这道题比较难懂,好像跟表单加字段没什么关系。但是我认为你正在寻找setattr
:
for item in selected_choices:
setattr(form.instance, item, False)