2

我在 django models.Model 的 unicode 表示中有以下代码:

def __unicode__(self):
    if self.right:
        return u"{left} ({left_score}) | {right} ({right_score})".format({
            'left': self.left, 
            'left_score': self.left_score, 
            'right': self.right, 
            'right_score': self.right_score,
        })
    else:
        return "%s" % self.left

我明白了

Exception Type: KeyError
Exception Value: u'left'

我还尝试在字典中使用 unicode 键。self.left 不是无。
我已经阅读了很多论坛仍然无法弄清楚我做错了什么。:(

我怎样才能解决这个问题?

4

2 回答 2

4

format方法要求您将参数作为 kwargs 传递,而不是作为字典传递。

def __unicode__(self):
    if self.right:
        return u"{left} ({left_score}) | {right} ({right_score})".format(
            left=self.left, 
            left_score=self.left_score, 
            right=self.right, 
            right_score=self.right_score,
        )
    else:
        return "%s" % self.left
于 2014-03-12T01:26:21.873 回答
1

您还可以就地解压存储的字典:

left, right = 'L', 'R'
left_score, right_score = "LS", "RS"

print u"{left} ({left_score}) | {right} ({right_score})".format(**{
            'left': left, 
            'left_score': left_score, 
            'right': right, 
            'right_score': right_score,
        })

出去:L (LS) | R (RS)

于 2014-03-12T01:30:01.923 回答