Django-Form:在清理表单时向表单添加附加信息的问题

Django-Form: Problem with adding additional information to form while cleaning it

我有一个 Django 表单,它只需要一个邮政编码。

class ServiceAreaForm(forms.Form):    
name = forms.CharField(disabled=True, required=False)
    zip = forms.IntegerField(
        label="PLZ", validators=[validateZipCodeLength]
    )
def clean(self):
    service_area: ServiceArea = validateServiceArea(self["zip"].value())
    self.fields["name"].value = service_area.name
    super().clean()

在 validateServiceArea 中,我想检查是否支持邮政编码。

def validateServiceArea(zip_code):
try:
    return ServiceArea.objects.get(zip=zip_code)
except ServiceArea.DoesNotExist:
    raise ValidationError("Not supported Service Area")

如果是这样,我想将返回的 ServiceArea 中的信息传递到另一个表单,而不是对同一事物使用另一个查询。

我一直在尝试使用表单的清理方法并将其放在名称字段中,但感觉太复杂了(名称甚至不会出现在 cleaned_fields 中)。

有什么简单的方法吗?

我会这样做:

def clean(self):
    cleaned_data = super.clean()
    service_area: ServiceArea = validateServiceArea(cleaned_data.get("zip"))
    cleaned_data["name"] = service_area.name
    return cleaned_data