簡體   English   中英

django-如何根據表單數據本身刪除表單字段?

[英]django - how to remove form fields based on form data itself?

假定此模型形式:

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')

情況很簡單-如果“性別”為Male,則必須輸入field1,而field2應該為空。 如果“性別”為女性,則表單中應填寫field2,field1應為空。 無論如何,如果未設置其他字段,我想在服務器中自行設置。 平均值-模型需要field1和field2。 我只希望表單中的一個可編輯。 我使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM