python - Django OneToOneField unicode 方法

标签 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 对象的实例数据?如何在不更改模型的情况下实现我想要做的事情?

最佳答案

使用 related_name 而不是 match:

#self.match.date
self.arsenalRoster.date

或者(您在Match模型中有2个指向Roster的链接):

self.opponentRoster.date

关于python - Django OneToOneField unicode 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785493/

相关文章:

python - 基于另一列在 pandas 数据框中创建一列

python - 对帖子的评论进行分页

Django 1.6 + Celery 3.1 = 类型错误 : 'Settings' object has no attribute '__getitem__'

django - 是否可以使用 Django 的 ORM 查询表而无需在模型中为其创建类?

regex - 字符名称,替换和Umlaut “Ü”:格式错误的UTF-8字符

python - Travis CI 将 ü 编码为 ¼

java - FontFactory (lowagie),Java,尝试使用 UniJIS-UCS2-H(日语)时出现 UnsupportedEncodingException

python - 查找法线图像和透视图像之间的角度

python - 如何根据图像上的颜色绘制图例?

python - Celery - 批量队列任务