0

Pythonを習得するために、Djangoを使用して簡単な課題追跡システムを作成しています。

私には2つの単純なクラスがあり(簡潔にするためにいくつかのコードを省略しています)IssueVersion

'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変数が使用されるのはなぜですか?IssueVersion

前もって感謝します!

4

1 に答える 1

1
>>> i.state = ISSUE_STATE[1]

この行は正しくありません。そのはず:

>>> i.state = ISSUE_STATE[1][0]
于 2012-04-14T18:43:31.167 に答える