Pau*_*jan 19 python django django-models django-select-related
我有 :
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)
Run Code Online (Sandbox Code Playgroud)
我怎样才能Alias拥有全部achiever_set和awards预先填充的?
>>> 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
Run Code Online (Sandbox Code Playgroud)
我将需要很多访问别名已经获得的奖项(中间表和奖项本身).我如何批量所有这些?
Veb*_*osa 24
Django版本1.4及以上版本prefetch_related用于此目的.
该prefetch_related方法类似于select_related,但不进行数据库连接.相反,它执行其他数据库查询并在Python中加入.
| 归档时间: |
|
| 查看次数: |
17516 次 |
| 最近记录: |