对于django的做事方式来说,这是一个小问题,但是我有一系列的循环,我确信可以更有效地完成。本质上,我有一组相关对象,我需要向下钻取图形以从与结束相关的对象中检索值。我在循环对象,最终得到我想要的值。请参见以下代码:
for media in campaign.media_set.all():
media_key = media.key
for target in media.target_set.all():
x = target.x
y = target.y
target_id = target.id
for metatag in target.metatag_set.all():
body = metatag.body
hdr = metatag.header
ftr = metatag.footer
ct_url = metatag.clickthrough
point_url = metatag.point.image_file
在用较少的db selects实现这一点的方法上有指针吗?
最佳答案
是的,你是在倒退。这是我和Django一起工作时遇到的一个问题。从要检索的对象开始并向后工作以满足所有条件是最简单的。也就是说,看起来你想要一些关于这个metatag
的信息,所以从这个开始。
MetaTag.objects.filter(conditions_here)
然后要检索像这个目标x/y这样的其他内容,只需使用在
related_name
对象上创建的automaticMetaTag
属性。不看模特很难说清楚。