Pythonを習得するために、Djangoを使用して簡単な課題追跡システムを作成しています。
私には2つの単純なクラスがあり(簡潔にするためにいくつかのコードを省略しています)Issue
、Version
'sの状態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
インスタンスの状態にアクセスすると、タプルとして返されます。Issue
オブジェクトによって提供されるasの状態にアクセスするVersion
と、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
の子プロパティとしてアクセスしたときに文字列のstate
変数が使用されるのはなぜですか?Issue
Version
前もって感謝します!