tôi có:Django: select_related với 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)
Làm thế nào tôi có thể có một Alias
đó có tất cả của nó achiever_set
và awards
prepopulated?
>>> 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
Tôi sẽ cần nhiều quyền truy cập vào giải thưởng mà bí danh đã nhận được (cả bảng trung gian và phần thưởng). Làm thế nào tôi có thể bó tất cả những điều này?