擅长:python、mysql、java
<p>对象的字符串表示和它的实际情况是有区别的。似乎您的<code>state</code>属性返回一个unicode表示为<code>InProgress</code>的对象,但这并不意味着它实际上等于<code>"InProgress"</code>。例如,如果<code>state</code>是另一个模型的外键-在这种情况下,您可以在查找中添加另一个级别,以获得返回该状态的实际字段。在</p>
<p><strong>更新后编辑</strong>很不幸,我觉得你把自己逼到了一个角落。由于没有实际的实例属性将状态作为字符串包含,因此无法通过字符串比较来获取状态。在</p>
<p>脑海中浮现出两种可能性。一种方法是将所有可能的<code>State</code>子类传递给模板上下文(可能通过上下文处理器),之后您将能够将您的<code>state</code>与实际对象进行比较。这太可怕了。在</p>
<p>另一种方法是在<code>State</code>类或模型上添加一个函数,该函数以字符串形式获取状态。这可以像现有的<code>__unicode__</code>方法一样简单(实际上不能使用它,因为模板语言禁止访问以下划线开头的属性)。然后您可以执行<code>ifequal foo.bar.0.state.as_string "InProgress"</code>或其他操作,这将调用<code>as_string()</code>方法,您的比较将成功。在</p>