1

I've been searching of why modelforms fields model returns None even it has a value given in the fields.

Form


class GoodMoralSettingForm(CrispyFormMixin, forms.ModelForm):
    class Meta:
        model = Student
        fields = [
            "requestor",
            "good_moral_certificate",
            "good_moral_remarks",
            "good_moral_purpose"
        ]

    def __init__(self, *args, **kwargs):
        self.student = kwargs.pop('student', None)
        super(GoodMoralSettingForm, self).__init__(*args, **kwargs)
        student = Student.objects.get(pk=self.student)

        self.fields['good_moral_certificate'].initial = student.good_moral_certificate

    def clean_good_moral_certificate(self):
        good_moral_certificate = self.cleaned_data.get('good_moral_certificate', None)
        good_moral_remarks = self.cleaned_data.get('good_moral_remarks', None)
        good_moral_purpose = self.cleaned_data.get('good_moral_purpose', None)
        requestor = self.cleaned_data.get('requestor', None)

        if requestor is None:
            requestor = "{requestor}"

        if good_moral_purpose is None:
            good_moral_purpose = "{good_moral_purpose}"

        if good_moral_remarks is None:
            good_moral_remarks = "{good_moral_remarks}"

        print("=========================")
        print(good_moral_remarks) # returns None
        print(good_moral_purpose) # returns None
        print(requestor) # returns data I suppose to get

        good_moral_certificate = good_moral_certificate.replace(
            "{requestor}", requestor).replace(
            "{remarks}", good_moral_remarks).replace(
            "{purpose}", good_moral_purpose
        )
        return good_moral_certificate

I try to clean that two fields but throws again a None, can someone help me where I did wrong? Really appreciate it

denmg
  • 360
  • 3
  • 12
  • I don't know if its my model ``` good_moral_remarks = models.TextField( _('Remarks'), blank=False, null=False, default=None ) good_moral_purpose = models.TextField( _('Purpose'), blank=False, null=False, default=None )``` but data is being printed on self.cleaned_data but it has error – denmg May 22 '20 at 11:14

1 Answers1

1

this question is answered in this Django cleaned_data.get('obj') method returns none, I have to declare my clean to the last field so it will all get the self.cleaned_data.

denmg
  • 360
  • 3
  • 12