Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Item.objects.all().only('name')In [26]: o = pa.model.objects.all().only('name')[0]
In [27]: o
Out[27]: <Product_Deferred_list_of_deferred_fields: someproduct>
In [28]: dict(o.__class__.__dict__)
Out[28]:
{...
'ops': <db.models.query_utils.DeferredAttribute object at 0x7eb6150c>,
...}
In [30]: o.ops
Out[30]: u'лалала'
In [31]: connection.queries[-2:]
Out[31]:
[{'sql': u'SELECT "product"."id", "product"."name" FROM "product" LIMIT 1',
'time': '0.000'},
{'sql': u'SELECT "product"."id", "product"."ops" FROM "product" WHERE "ipc_product"."id" = 1 ',
'time': '0.000'}]
Point = namedtuple('Point', 'x y'.split())
Point = namedtuple('Point', ('x', 'y'))
qs = Item.objects.filter(...).values_list('title', 'amount', 'price')
for title, amount, price in qs:
print title, amount
total += amount * priceqs = Item.objects.filter(...).namedtuples('title', 'amount', 'price')
for item in qs:
print item.title, item.amount
total += item.amount * item.priceitem — это полноценная модель.Items.objects...., должно быть Item.objects....In [8]: %timeit Product.objects.all().values_list('title', 'unit_price')
10000 loops, best of 3: 160 us per loop
In [9]: %timeit Product.objects.all().namedtuples('title', 'unit_price')
10000 loops, best of 3: 162 us per loop
In [10]: Product.objects.count()
Out[10]: 1867
.only('name1', 'name2') использовал. По моему, описываемую вами проблему покрывает полностью но при этом более гибкое и прозрачное.votes = Vote.objects.filter(object_id = 1, content_type=1).namedtuples('value', 'vote_time', key='user_id')
user_vote = votes.get(user.pk)
objs_by_pk = dict((obj.pk, obj) for obj in queryset)
Именованные кортежи из выборок