对于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属性。不看模特很难说清楚。

10-07 12:43