0

我一直在寻找为什么 modelforms 字段模型返回 None 即使它在字段中给出了值。

形式


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

我尝试清理这两个字段,但又抛出了一个无,有人可以帮我在哪里做错了吗?真的很感激

4

1 回答 1

0

这个问题在这个Django clean_data.get('obj') 方法中得到了回答,它没有返回,我必须将我的 clean 声明到最后一个字段,这样它就会全部获得 self.cleaned_data。

于 2020-05-26T00:34:10.303 回答