我有一个模型,其中有一个映射到cities_light.city的位置字段,我使用了一个自动填充字段,允许用户键入他们的城市并使其自动完成正确/有效位置模型实例。Django autocomplete_light和cities_light - 无效的选择
class Profile(models.Model):
location = models.ForeignKey(City, blank=True, null=True)
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = ('location')
widgets = {
'location': autocomplete_light.TextWidget(CityAutocomplete, autocomplete_js_attributes={'placeholder':'City, Country', 'minimum_characters':4})
}
表单域的工作原理与广告一致,并显示自动完成选项列表。但是,当我保存表单/模型时,我得到一个验证错误,这似乎是由于该字段未被翻译成City模型实例的主键而导致的。
Select a valid choice. That choice is not one of the available choices.
我猜我需要延长AutocompleteModelBase像CityAutocomplete以下实现,但我不知道怎么样,我一直无法找到工作的例子。
class CityAutocomplete(autocomplete_light.AutocompleteModelBase):
search_fields = ('search_names',)
https://github.com/yourlabs/django-cities-light/blob/master/cities_light/contrib/autocompletes.py
感谢任何帮助,我很抱歉,如果我的问题是格式不正确。
'fields =('location')'应该是'fields =('location',)'或'fields = ['location']'。要检查字段是否正确翻译,请检查隐藏的select元素。另外,有什么方法可以重现test_project中的错误? – jpic 2013-04-10 22:36:58
我看不到任何隐藏的选择元素。我正在使用autocomplete.TextWidget而不是选择字段。但是我确实看到我想要的实际值是自动完成元素的数据值。发送城市的字符串名称而不是id。领域变化没有区别。我会看看test_project,谢谢。 – Z99 2013-04-11 14:01:20
哦,我也用django 1。5我忘了提及。 – Z99 2013-04-11 14:12:59