python - Do Django backward relations add overhead? -


in django, create models , can optionally specify foreign key on field

class man:       ...  class dog:       ...       owner = models.foreignkey(man, on_delete=models.set_null) 

you can query each dog respective owner or dogs man

owner = some_dog.owner  all_dogs = some_man.dog_set.all() 

if want not create backward relation specified the docs, can do

class man:       ...  class dog:       ...       owner = models.foreignkey(man, on_delete=models.set_null, related_name='+') 

now no longer have access all_dogs = some_man.dog_set.all().

however, additional "building" of backward relation add overhead?
if never ever used all_dogs = some_man.dog_set.all() matter whether or not
had specified related_name='+' in dog? slow things down potentially?

and functionality purely implemented in application side django, or related_name='+' change database schema itself?

however, additional "building" of backward relation add overhead?

no

if never ever used all_dogs = some_man.dog_set.all() matter whether or not had specified related_name='+' in dog? slow things down potentially?

no, , no.

and functionality purely implemented in application side django, or related_name='+' change database schema itself?

it's implemented python descriptors. in case of foreignkey, that's reversemanytoonedescriptor. there no change in database schema, , presence or absence of related name not generate migration.

if haven't disabled relation, should see descriptor objects there attributes on model classes. this:

>>> dog.owner <django.db.models.fields.related_descriptors.forwardmanytoonedescriptor @ 0x105db25d0> >>> man.dog_set <django.db.models.fields.related_descriptors.reversemanytoonedescriptor @ 0x105db27d0> 

these objects make django's orm magic work.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -