【问题标题】:Add fields dynamically in django ModelForm在 django ModelForm 中动态添加字段
【发布时间】:2023-03-09 09:26:01
【问题描述】:

我的模特

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,其余的必须不受影响。请帮助....

【问题讨论】:

  • 对不起:)

标签: python django django-models django-forms modelform


【解决方案1】:

这个问题很难理解,似乎和给表单添加字段没有任何关系。但我认为你正在寻找setattr

    for item in selected_choices:
        setattr(form.instance, item, False)

【讨论】:

猜你喜欢
  • 2012-01-26
  • 2011-08-26
  • 1970-01-01
  • 2018-11-08
  • 2011-01-05
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2011-06-13
相关资源
最近更新 更多