0
我有以下表格:追溯外國鍵
class Person (models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
gender = models.CharField(max_length = 1, choices=GENDER_CHOICES, default='M')
age = models.IntegerField()
photo = models.ImageField(upload_to='uploads/images/runners', blank=True)
def __unicode__(self):
return '%s, %s' % (self.last_name, self.first_name)
和
class Runner (models.Model):
''' Represents a runner actually in a particular Race '''
position = models.IntegerField()
person = models.ForeignKey(Person, related_name="person")
race = models.ForeignKey(Race)
和
class Race (models.Model):
'''An instance of an Event. i.e., the race that is happening this year'''
year = models.IntegerField()
description = models.TextField()
event = models.ForeignKey(Event)
def leaderboard(self):
'''
Orders the leaders and returns the entire set
Args:
Returns:
A list of Runners ordered by position
'''
#board = Runner.objects.prefetch_related("person").filter(race=self).order_by('position')
board = Runner.objects.prefetch_related("person")
print "DEBUG: %s" % board.values()
return board
我試圖做到的是檢索和隨後編碼包含Runner實例列表的JSON響應,其中包含每個相應Person實例的屬性。
在排行榜方法中,我寫了一個我的查詢的例子。在執行了它,我得到如下:
DEBUG: [{'person_id': 1, 'position': 1, 'id': 1, 'race_id': 1}, {'person_id': 2, 'position': 2, 'id': 2, 'race_id': 1}]
我想那是什麼樣子是有QuerySet的擴大(和替換)每個「PERSON_ID」字段與一個人的實例和實例的所有相關屬性(即名字,姓氏等
這可能嗎?我已經試過兩prefetch_related()和select_related但無濟於事玩耍。
與往常一樣,任何的幫助深表感謝。
訪問它我不確定你使用related_name做你想要的:Person.person.all() - >實例。你可能想'related_name =「運行」'。 –
2013-02-11 03:14:25