gpt4 book ai didi

python - Django autocomplete_light 和 city_light - 无效选择

转载 作者:行者123 更新时间:2023-11-30 23:37:04 26 4
gpt4 key购买 nike

我有一个模型,其中的位置字段映射到 cars_light.city,并且我正在使用自动完成字段,该字段允许用户输入他们的城市并将其自动完成到正确/有效的位置模型实例。

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})
}

表单字段的工作方式与广告中的完全一样,并显示自动完成选项列表。但是,当我保存表单/模型时,出现验证错误,这似乎是由于该字段未转换为城市模型实例的主键所致。

Select a valid choice. That choice is not one of the available choices.

我猜我需要像下面实现的 CityAutocomplete 一样扩展 AutocompleteModelBase,但我不确定如何扩展,而且我一直无法找到有效的示例。

class CityAutocomplete(autocomplete_light.AutocompleteModelBase):
search_fields = ('search_names',)

https://github.com/yourlabs/django-cities-light/blob/master/cities_light/contrib/autocompletes.py

感谢您的帮助,如果我的问题格式不正确,我很抱歉。

最佳答案

您的问题并非特定于 django-autocomplete-light。你正在做的事情没有机会发挥作用,原因如下:

因此,使用文本小部件选择几个城市(例如“里斯本”和“马德里”)将如下所示::

<input type="text" value="Lisboa, Madrid" name="location" />

这意味着表单将发布 {'location': 'Lisboa, Madrid'} 。虽然这对于 CharField 有好处,它不适用于 ModelMultipleChoiceField预计会出现类似 {'location': [3,5]} 的内容其中 3 是里斯本的 pk,5 是马德里的 pk。

以同样的方式,ModelChoiceField预计 {'location': 3}其中autocomplete_light.ChoiceWidget是能够做到的。

要解决此问题,请使用 ChoiceWidget而不是TextWidget 。我已经澄清了这一点in the tutorial我希望现在好多了。

关于python - Django autocomplete_light 和 city_light - 无效选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com