0

型号:Django表单清洁

class MyModel(models.Model): 
    status = models.ForeignKey(Status, on_delete=models.PROTECT, null=True, blank=True) 
    date = models.DateField() 

形式:

class MyModelForm(ModelForm): 

    class Meta: 
     model = MyModel 
     fields = '__all__' 

    def clean_date(self): 
     cd = self.cleaned_data 
     status = cd.get('status') 
     date = cd.get('date') 

     if not date and status == 1: 
      raise forms.ValidationError((mark_safe('<p class="text-danger">When status is .... You must add date </p>'))) 
     return date 

我清洁功能无法正常工作。怎么了?你可以帮我吗 ?

+2

请详细说明,您的数据和错误信息 –

回答

2

如果您是cleaning fields that depend on each other,那么您应该覆盖clean方法而不是clean_date

由于status是一个外键,它永远不会等于1。也许你想检查主键,在这种情况下,你应该使用status.pk

def clean(self): 
    cleaned_data = super(ContactForm, self).clean() 
    status = cleaned_data.get('status') 
    date = cleaned_data.get('date') 
    if not date and status.pk == 1: 
     raise forms.ValidationError((mark_safe('<p class="text-danger">When status is .... You must add date </p>'))) 

    return cleaned_data 
+0

谢谢,您的解决方案完美无缺。 – Dominik