django - Select a single field from a foreign key -
so have a simple (simplified) model
class myobject(models.model):     owning_user = models.foreignkey(user, null=true) now in 1 of templates i'm trying iterate on list of these objects determine whether should displayed similar this
{% my_object in foo.my_object_set %}     {% if my_object.owning_user.id == user.id %}          show me!     {% endif %} this works fine, finding query
my_object.owning_user.id returns every field owning user before getting id verified both in django debug tool bar, , checking connection queries
# django-debug-toolbar states repeated multiple times      select ••• "auth_user" "auth_user"."id" = 1  # following test code confirms django.db import connection conn = connection bearing_type.owning_user.id print conn.queries[-1] now since query repeats on 1000 times , takes 2ms per query taking 2 seconds perform - when care id...
is there anyway @ can perform query id owning_user instead of having query fields?
note, i'm trying hard here avoid making raw query
if use my_object.owning_user_id instead of my_object.owning_user, django use id instead of looking user.
in case, need id, if needed other user attributes, use select_related. in view, do:
foo.my_object_set.select_related('user') in template, don't have control, since can't pass arguments.
{{ foo.my_object_set.select_related }} 
Comments
Post a Comment