[英]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.