如何删除基于表单数据本身的表单字段



假设此模型形式:

class MyModel(models.Model):
   sex = models.CharField(max_length=1, default='M')
   field1 = models.CharField(max_length=20)
   field2 = models.CharField(max_length=20

)

class MyForm(ModelForm):
   class Meta:
      model = MyModel
      fields = ('sex', 'field1', 'field2')

情况很简单——如果"sex"是Male,则字段1应该是必需的,字段2应该是空的。如果"性别"是女性,则表单中的字段2应填写,字段1应为空。在任何情况下,如果没有设置其他字段,我想在服务器中自己设置它。平均值-模型需要字段1和字段2。我只想在表单中只有一个是可编辑的。我使用javascript在表单中有条件地显示它们,如何在服务器中强制执行?

我试过使用

self.fields.pop('field1')

在形式.clean()中,但它不起作用,因为它在字段级中仍然是必需的

在__init__方法中:

    def __init__(self, *args, **kwargs):
        if self.is_bound:
            sex = self.data.get('sex', None)
            if sex == 'M':
               self.fields['field1'].required = False

相关内容

  • 没有找到相关文章

最新更新