Hi,

Hmm, so are we saying that:

   - Using model methods uses less storage, but performs worse.
   - Overriding the model's save() method uses more storage, but performs 
   better.

I understand the storage part - but I'm a bit confused about the 
performance part - how does one perform better than the other?

Also - in terms of using them with QuerySets - there aren't any workarounds 
to use model methods with QuerySets are there? It seems like that would be 
a definite argument in favour of using the second method, right?

Finally - thanks for the tip about signals() - so should I be using 
something like django.db.models.signals.post_save in addition to overriding 
save(), or instead of it?

Cheers,
Victor

On Monday, 10 December 2012 10:49:22 UTC+11, Chris Cogdon wrote:
>
> Even though I'm a total database junkie (and where by that I mean 
> postgresql > mysql :) ), I have to agree with Mike. If you can keep it in 
> the model layer, do that. Once you start putting optimisations into the 
> database layer, you lose a lot of portability between databases: there is 
> no such thing as "standard SQL" for anything other than toy applications. 
> Optimisation tend to be very engine-specific.
>
> However, just remember that those optimisations are possible, and the 
> database is far more reliable for maintaining your invariants than the 
> client is.
>
>
>
> On Sunday, December 9, 2012 3:30:01 AM UTC-8, Mike Dewhirst wrote:
>>
>>
>>
>> For the sake of maintainability it might be better to keep all database 
>> manipulation in the model layer rather than split it betweem models and 
>> database. 
>>
>>
>>
>> and, well, that code is part of the 
>> > code base too. 
>>
>> Which means you need to keep pretty comprehensive documentation if you 
>> are doing database stuff in two areas. 
>>
>> Personally, I'd keep it all in the django ORM until the project is 
>> mature and requires the final molecule of optimisation. 
>>
>> Mike 
>>
>> > 
>> >                                - Tom 
>> > 
>> >> 
>> >> Derek 
>> >> 
>> >> [1] https://docs.djangoproject.com/en/dev/topics/signals/ 
>> >> 
>> >> On Saturday, 8 December 2012 04:27:50 UTC+2, Chris Cogdon wrote: 
>> >> 
>> >>     It's a simple performance vs storage question. 
>> >> 
>> >>     Storing a calculatable field also risks it getting out of sync 
>> >>     with reality, but if you're doing the query on that _so_ much, 
>> >>     then its usualyl worth it. 
>> >> 
>> >>     Also, with the right database and a trigger, that's something the 
>> >>     database can ensure for you. Ie, a field that the database updates 
>> >>     for you. 
>> >> 
>> >> 
>> >>     On Friday, December 7, 2012 5:54:37 PM UTC-8, Victor Hooi wrote: 
>> >> 
>> >>         Hi, 
>> >> 
>> >>         I have a "ranking" field for an item that returns an integer 
>> >>         between 1 to 10 based on a number of criteria of each item. 
>> >> 
>> >>         My question is - what are the pros and cons of using a model 
>> >>         method to return this, versus overriding the save() method and 
>> >>         saving it directly into a normal IntegerField on that item? 
>> >> 
>> >>         I understand that model methods *won't* let me use them within 
>> >>         QuerySet filters on that item - is there any way around that? 
>> >> 
>> >>         If I just override the model's save() method to get it 
>> >>         recalculate and save that field each time, I can use it within 
>> >>         QuerySet filters. Any cons with that approach? 
>> >> 
>> >>         What do you guys tend to use in your projects? 
>> >> 
>> >>         Cheers, 
>> >>         Victor 
>> >> 
>> >> -- 
>> >> You received this message because you are subscribed to the Google 
>> >> Groups "Django users" group. 
>> >> To view this discussion on the web visit 
>> >> https://groups.google.com/d/msg/django-users/-/G7fp5OLkapgJ. 
>> >> To post to this group, send email to django...@googlegroups.com. 
>> >> To unsubscribe from this group, send email to 
>> >> django-users...@googlegroups.com. 
>> >> 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 django...@googlegroups.com. 
>> > To unsubscribe from this group, send email to 
>> > django-users...@googlegroups.com. 
>> > 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 view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/CBv6vkNLFe0J.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to