我有一個模型,其中有一個映射到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