Thanks, yes I did look at model validation in the docs - it looked to be 
tied to use via forms.  I hadn't realised that it's not called 
automatically when an instance is created.  So if I was to validate when 
using get_or_create method would I then manually call full_clean() after 
get_or_create() ? 

I think you may be right regarding just setting up forms for the models.  I 
don't need a form but do need the validation.  

Thanks for your help. 

On Wednesday, 21 October 2015 19:09:01 UTC+1, Simon Charette wrote:
>
> Hi Yunti,
>
> Did you read about model level validation 
> <https://docs.djangoproject.com/en/1.8/ref/models/instances/#validating-objects>?
>  
> Calling model_instance.full_clean() triggers validation but it's not 
> implicitly called when you save an instance.
>
> For your date case you'll have to include a layer that feeds Django models 
> with datetime.date objects from your string representation. That's what 
> Django forms do under the hood using the DATE_INPUT_FORMAT setting 
> <https://www.google.com/url?q=https%3A%2F%2Fdocs.djangoproject.com%2Fen%2F1.8%2Fref%2Fsettings%2F%23date-input-formats&sa=D&sntz=1&usg=AFQjCNG918aoHFS_G4IDK9V4zC0StTrS8g>
> .
>
> I would suggest you define Model form for your models and use them to 
> perform conversion and validation of your scrapped data.
>
> Simon
>
> Le mercredi 21 octobre 2015 13:49:08 UTC-4, Yunti a écrit :
>>
>> I have a django project where I want to save web scraped data to the 
>> database via the django ORM- which will be used in the django app. 
>>
>> The data is currently in the form of JSON -> converted to python dict via 
>> json.loads
>>
>> I setup my model with the narrowest/ most constrained field type possible 
>> - (e.g. DecimalField with decimal_places=2 and max_digits=4 for prices)
>>
>> I naively tried to save the data/values from the relevant keys in the 
>> JSON directly to the relevant model field, however, this raised errors due 
>> to data format.
>>
>> It looks like data entered via a form is converted to the relevant python 
>> object in the form validation - e.g. a date string '24 May 2015' is 
>> converted to a datetime object and the date format validated.  
>>
>> None of this appears to happen when saving directly to a model? (would be 
>> good to have my understanding here confirmed?) and so saving '24 May 2015' 
>> directly to a DateField in a model produces a format error. 
>>
>> What validation (if any) does Django do when saving to a database 
>> directly via the ORM? - Does it just rely on the type checking in the 
>> database (so for sqlite this would be nothing but would for postgres)?
>>
>> Thanks.
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f8f33490-8dff-4e9f-8230-14c195609e6f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to