Django OneToOneField unicode方法

时间:2014-02-14 17:14:28

标签: python django unicode

我正在构建一个Django应用程序来模拟足球比赛。我的两个模特是:

class Match(models.Model):
    arsenal = models.OneToOneField('Roster', related_name="arsenalRoster")
    opponent = models.OneToOneField('Roster', related_name="opponentRoster")
    date = models.DateTimeField()
    location = models.CharField(max_length=64)
    ...

class Roster(models.Model):
    squad = models.ForeignKey('Squad')

    def __unicode__(self):
        if self.squad.season.footballClub.name is "Arsenal Football Club":
            return u'%s, @%s' % (self.match.date, self.match.location)
        else:
            return u'%s, %s' % (self.match.date, self.squad.season.footballClub.name)

现在显然我无法返回self.match.date,因为没有实例属性来访问匹配对象,并且恰当地我收到错误:AttributeError: 'Roster' object has no attribute 'match'。然而,根据给定的条件,这是我想要返回的信息。是否可以从Roster对象访问Match对象的实例数据?如何在不改变模型的情况下实现我想要做的事情?

1 个答案:

答案 0 :(得分:2)

使用related_name而不是match

#self.match.date
self.arsenalRoster.date

或(Roster模型中有Match的2个链接:

self.opponentRoster.date