データベースに当たっている私は私のモデルでプロパティを持っています。ジャンゴ - なぜこの二回
def _get_image(self):
return Media.objects.get_for_object(self)
image = property(_get_image)
それは私のメディアモデルに次の関数を呼び出します:
def get_for_object(self, obj):
ctype = ContentType.objects.get_for_model(obj)
return self.filter(items__content_type__pk=ctype.pk, items__object_id=obj.pk)
その後、私のテンプレートで私は
{% if entry.image %}
<h2>Current image:</h2>
{% for m in entry.image %}
{{ m }}
{% endfor %}
{% endif %}
なんらかの理由で、私のSQLの読取りで、これらの2つのクエリが互いに隣り合って表示されます。
0.40 SELECT
EXPLAIN
Toggle Stacktrace
SELECT `media_media`.`id`, `media_media`.`file`, `media_media`.`content_type`, `media_media`.`created` FROM `media_media` INNER JOIN `media_mediaattachment` ON (`media_media`.`id` = `media_mediaattachment`.`media_id`) WHERE (`media_mediaattachment`.`content_type_id` = 12 AND `media_mediaattachment`.`object_id` = 20)
0.38 SELECT
EXPLAIN
Toggle Stacktrace
SELECT `media_media`.`id`, `media_media`.`file`, `media_media`.`content_type`, `media_media`.`created` FROM `media_media` INNER JOIN `media_mediaattachment` ON (`media_media`.`id` = `media_mediaattachment`.`media_id`) WHERE (`media_mediaattachment`.`content_type_id` = 12 AND `media_mediaattachment`.`object_id` = 20)
私はentry.imageにアクセスするたびに、データベースがヒットしています。確かにそれは結果や何かを保存する必要がありますか?
ありがとう、これはcですそれを行うレバー方法。私の無知を許して、私はまだdjangoがどのようにクエリを扱うかを学んでいます。 – Hanpan