Django 按州名查询而不是 2 个字符的缩写

Django Query by State Name instead of 2 char abbreviation

我有一个具有 MULTISELECTFIELD 的模型,用户可以在其中 select 哪些状态与其相关。它在后端使用 django-localflavor 等他们选择 'TEXAS' 和 'TX' 的形式存储在数据库中。我正在使用此 Q 查询来查找与某个州关联的用户。 Q(states__icontains=query) 但这仅 return 是 'TX' 而不是 'TEXAS' 的成功。这是有道理的,因为这就是它在数据库中的存储方式,但是我如何通过德克萨斯州进行搜索并获得相同的 return?

我能想到的就是转到 Class 管理器 (myclassManager(models.Manager) 并创建一个 get_state_name 方法,该方法接受一个 2 位代码和 return是州名称。如果是这样的话,我必须手工制作一个包含列表的字典。

我觉得这可能是一种更简洁的方法。

想法?

我刚刚看了一下 localflavor 并且内置了与我在评论中建议的类似的内容。

from localflavor.us.forms import USStateSelect

class StateSearchForm(forms.Form):
    search = forms.ChoiceField(widget=USStateSelect)