Consider the following stacktrace:
In [3]: f.clean()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
C:\Users\Marcin\Documents\oneclickcos\lib\site-packages\django\core\management\commands\shell.pyc in <module>()
----> 1 f.clean()
C:\Users\Marcin\Documents\oneclickcos\oneclickcos\mainapp\incorporate_helpers.pyc in clean(self)
569 This checks the relations between fields, ensures consistent state, and exports bits about the state of the form that can be used in subsequent
validations
570 """
--> 571 cleaned_data = super(IncorporateForm, self).clean()
572 #logger.debug('IncorporationForm.cleaned_data: ' + str(cleaned_data))
573 try:
C:\Users\Marcin\Documents\oneclickcos\oneclickcos\mainapp\incorporate_helpers.pyc in clean(self)
402
403 def clean(self):
--> 404 cleaned_data = super(CreateForm, self).clean()
405 # trying to use an empty pk can result in a ValueError. Easier to expunge.
406 if cleaned_data.get('pk', None) == '': del cleaned_data['pk']
C:\Users\Marcin\Documents\oneclickcos\lib\site-packages\django\forms\forms.pyc in clean(self)
315 association with the field named '__all__'.
316 """
--> 317 return self.cleaned_data
318
319 def has_changed(self):
AttributeError: 'IncorporateForm' object has no attribute 'cleaned_data'
(All relevant code is shown in the trace above).
My code conforms to the examples at https://docs.djangoproject.com/en/1.4/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other; however, it seems that BaseForm returns expects cleaned_data to exist.
Nowhere in the documentation do I see that it is the responsibility of user code to create cleaned_data before calling clean. What gives? Is this a bug in Django?
Error appears with django 1.4 and 1.3.1.
You shouldn’t call
cleandirectly at all. You should callform.is_valid().