我可以在Django模型上使用select_related()和ManyToManyField吗?
我可以在Django模型上使用select_related()和ManyToManyField吗?
我有:
class Award(models.Model): name = models.CharField(max_length=100, db_index=True) class Alias(models.Model): awards = models.ManyToManyField('Award', through='Achiever') class Achiever(models.Model): award = models.ForeignKey(Award) alias = models.ForeignKey(Alias) count = models.IntegerField(default=1)
我该如何预填充一个拥有其所有`achiever_set`和`awards`的`Alias`对象?
>>> db.reset_queries() >>> Alias.objects.filter(id="450867").select_related("achiever_set__award").get().achiever_set.all()[0].award.name u'Perma-Peddle' >>> len(db.connection.queries) 3 >>> db.reset_queries() >>> Alias.objects.filter(id="450867").select_related("awards").get().awards.all()[0].name u'Dwarfageddon (10 player)' >>> len(db.connection.queries) 2
我需要大量访问别名已获得的奖项(包括中间表和奖项本身)。如何批量处理所有这些访问?