[英]Django RelatedManager converts tuple to Unicode string?
为了帮助自己学习Python,我使用Django编写了一个简单的问题跟踪器。
我有两个简单的类(为简洁起见,省略了一些代码): Issue
和Version
有一个ISSUE_STATE
元组,用于维护Issue
的状态:
ISSUE_STATE = (
('p', 'In Progress'),
('o', 'Open'),
('r', 'Resolved'),
('c', 'Closed'),
)
它在Issue
的维护方式如下:
class Issue(models.Model):
state = models.CharField(max_length=1, choices=ISSUE_STATE)
fix_version = models.ForeignKey(Version, related_name='issuesAsFix', null=True, blank=True, default=None)
(如您所见, Version
维护一个Issue
对象的列表。)
问题:
当我访问单个Issue
实例的状态时,它将作为元组返回。 当我访问Version
对象提供的Issue
的状态时,它以Unicode字符串形式返回:
>>> v = Version()
>>> v.save()
>>> i = Issue()
>>> i.fix_version = v
>>> i.state = ISSUE_STATE[1]
>>> i.save()
>>> i.state
('o', 'Open')
>>> v.issuesAsFix.all()[0].state
u"('o', 'Open')"
>>> i == v.issuesAsFix.all()[0]
True
>>> i is v.issuesAsFix.all()[0]
False
当作为Version
的子属性访问时,为什么Issue
的state
变量是字符串?
提前致谢!
>>> i.state = ISSUE_STATE[1]
这行是不正确的。 它应该是:
>>> i.state = ISSUE_STATE[1][0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.