擅长:python、mysql、java
<p>如果您想在默认情况下获得<code>get_FOO_display</code>,那么必须重写<code>__getattribute__</code>方法。试试这样的方法:</p>
<pre><code>class FooModel(models.Model):
...
def __getattribute__(self, item):
get = lambda i: object.__getattribute__(self, i)
name_map = get('_meta')._name_map
if item.startswith('_') or name_map.has_key(item):
return get(item)
else:
field = name_map.get(item)
if field.choices:
return get('get_%s_display' % item)()
else:
return get(item)
</code></pre>