首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django autocomplete_light和cities_light -无效选择

Django autocomplete_light和cities_light -无效选择
EN

Stack Overflow用户
提问于 2013-04-10 08:26:02
回答 1查看 1.9K关注 0票数 1

我有一个带有映射到cities_light.city的location字段的模型,我正在使用一个自动完成字段,它允许用户输入他们所在的城市,并让它自动完成到正确/有效的location模型实例。

代码语言:javascript
复制
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模型实例的主键所导致的。

代码语言:javascript
复制
Select a valid choice. That choice is not one of the available choices.

我猜我需要像下面实现的CityAutocomplete一样扩展AutocompleteModelBase,但我不确定如何扩展,也找不到可用的示例。

代码语言:javascript
复制
class CityAutocomplete(autocomplete_light.AutocompleteModelBase):
    search_fields = ('search_names',)

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

谢谢你的帮助,如果我的问题格式不好,我很抱歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-12 01:36:22

您的问题并不是特定于django-autocomplete-light。你所做的是没有机会工作的,原因如下:

  • 类似ForeignKey的表单字段默认是一个ModelChoiceField
  • ModelChoiceField接受ModelChoiceField.queryset中模型的PK值,默认情况下是TheModel.objects.all()
  • <代码>D12小部件<代码>C13,<代码>H214<代码>H115<代码>C16,<代码>H217<代码>H118在表单提交时,D19的值直接发送到服务器。<代码>H220<代码>F221

因此,使用文本小部件选择像"Lisboa“和”马德里“这样的几个城市将如下所示:

代码语言:javascript
复制
<input type="text" value="Lisboa, Madrid" name="location" />

这意味着表单将发布{'location': 'Lisboa, Madrid'}。虽然这对CharField来说很好,但对于像{'location': [3,5]}这样的ModelMultipleChoiceField是行不通的,其中3是Lisboa的pk,5是马德里的pk。

以同样的方式,ModelChoiceField期望{'location': 3},而autocomplete_light.ChoiceWidget能够做到这一点。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15914904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档