ModelValidation ignores blank=True
|Reported by:||anonymous||Owned by:||nobody|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I'm not quite sure if this is a feature or a bug, so sorry if i misunderstood this.
I am using a Model "Foo" that has a field like this:
[...] class Foo(models.Model): uid = models.ForeignKey(UserProfile, blank=True) [...]
Next, I'm using this Model in a Form (via ModelForm):
class FooForm(ModelForm): class Meta: model = Foo [...]
I expect Django to ignore the
uid when calling
is_valid(), as it's
blank attribute is set
True , but I get a ValueError:
ValueError at /foo/add/ Cannot assign None: "Foo.uid" does not allow null values. Request Method: POST Request URL: http://localhost:8000/de/foo/add/ Django Version: 1.2.1 Exception Type: ValueError Exception Value: Cannot assign None: "Foo.uid" does not allow null values. Exception Location: <cut>/lib/python2.6/site-packages/django/db/models/fields/related.py in __set__, line 314
This is since at the point where
is_valid() is valled, uid is set to
None, since it is not sent by the form but filled in my view (it's request.user.get_profile().user_id).
I looked for this in the Django docs, but didn't get a proper solution but using
full_clean() which would need me to adapt the code & use try/except .