It looks like the CharField is accepting 'none' in its to_python method. That might explain why we don't get the error until your to save it. I'm sure there is a reason behind this -- I just don't know what it is :) Source: django/db/models/fields/__init__.py
On Fri, Jun 1, 2012 at 11:08 AM, Kurtis Mullins <[email protected]>wrote: > Yeah, I'm getting exactly the same results. It seems that it's not > throwing the IntegrityError until you try to save it. I suppose that's > because it's marked as 'not null' in the database. It appears to be > ignoring it in the actual clean() (and consequently clean_fields()) > methods. I'm going to look into the source of the Model module and see > what's going on > > > On Fri, Jun 1, 2012 at 10:55 AM, David Markey <[email protected]> wrote: > >> 1.4 >> >> On 1 June 2012 15:54, Kurtis Mullins <[email protected]> wrote: >> >>> What version of Django are you using? >>> >>> >>> On Fri, Jun 1, 2012 at 10:47 AM, David Markey <[email protected]> wrote: >>> >>>> That is my exact class for that model. >>>> >>>> >>>> On 1 June 2012 15:27, Kurtis Mullins <[email protected]> wrote: >>>> >>>>> From the docs: >>>>> https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#django.db.models.Model.full_clean >>>>> >>>>> from django.core.exceptions import ValidationError, NON_FIELD_ERRORStry: >>>>> article.full_clean()except ValidationError as e: >>>>> non_field_errors = e.message_dict[NON_FIELD_ERRORS] >>>>> >>>>> It looks like it's not firing off that exception in your case -- >>>>> unless it's being supressed somehow. Did you override anything else in >>>>> that >>>>> Model? Or is this example literally 'it'? >>>>> >>>>> On Fri, Jun 1, 2012 at 9:47 AM, David Markey <[email protected]>wrote: >>>>> >>>>>> Hi All, >>>>>> >>>>>> Say I have this model >>>>>> >>>>>> class TestModel(models.Model): >>>>>> my_test = models.CharField(max_length=512, blank=True) >>>>>> >>>>>> And I try this: >>>>>> >>>>>> In [1]: from core.base.models import TestModel >>>>>> >>>>>> In [2]: test_model = TestModel() >>>>>> >>>>>> In [3]: test_model.my_test =* ""* >>>>>> >>>>>> In [4]: test_model.full_clean() >>>>>> >>>>>> In [5]: test_model.save() >>>>>> >>>>>> *Ok cool, this is expected.* >>>>>> * >>>>>> * >>>>>> *How about:* >>>>>> >>>>>> >>>>>> In [6]: test_model2 = TestModel() >>>>>> >>>>>> In [7]: test_model2.my_test =* None* >>>>>> >>>>>> In [8]: test_model2.full_clean() >>>>>> >>>>>> In [9]: test_model2.save() >>>>>> >>>>>> ##*IntegrityError raised* >>>>>> >>>>>> Is there a way for full_clean() to catch that the "my_test" field is >>>>>> Null when it shouldn't be, when blank=True? >>>>>> >>>>>> If I have blank=False, it wont validate when my_test="". >>>>>> >>>>>> >>>>>> Thanks >>>>>> >>>>>> David >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Django users" group. >>>>>> To post to this group, send email to [email protected]. >>>>>> To unsubscribe from this group, send email to >>>>>> [email protected]. >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/django-users?hl=en. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Django users" group. >>>>> To post to this group, send email to [email protected]. >>>>> To unsubscribe from this group, send email to >>>>> [email protected]. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/django-users?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Django users" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/django-users?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Django users" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/django-users?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

