Djangoのドキュメントで最適化されているので、少し実験をしました。だから私はこれをしなかった:django querysetは本当に何をしていますか?
>>> x = Artist.objects.only('id').filter()
>>> print x.query
SELECT "store_artist"."id" FROM "store_artist"
>>> y = Artist.objects.filter()
>>> print y.query
SELECT "store_artist"."id", "store_artist"."name", "store_artist"."birth_date" FROM "store_artist"
私はクエリはしかし、私は、さらにテストをした変更されたことを確認できます。
>>> for _x in x:
... _x.name
...
u'Beyone'
u'Beyoneeee'
u'Beyone231231'
u'Beyone2222'
u'No Album'
>>> for _y in y:
... _y.name
...
u'Beyone'
u'Beyoneeee'
u'Beyone231231'
u'Beyone2222'
u'No Album'
だから、あなたはそれだけで同じ結果を持って気づいた場合。どうしてこうなりました?私は名前が表示されるか、または無効であるべきではないのでY変数に私はIDをフェッチすることを考えた。ここ
方法によって私のモデルである:
class Artist(EsIndexable, models.Model):
name = models.CharField(max_length=50)
birth_date = models.DateField()
ああ、私のクエリは単なる1つではなく倍増しましたか? –
この場合ははいですが、あなただけがあなたが他のフィールドを必要としていないと言っています – Sayse
私はそれがどう起こったのか疑問に思っていた...それがもうフェッチされないとわかったとき –