首页 > 解决方案 > django-autocomplete-light 不适用于 autocomplete.ModelSelect2Multiple

问题描述

当我使用 ManyToManyField 创建模型时,按照教程进行操作:

class Country(models.Model):
    name = models.CharField(max_length=200)
    def __str__(self):
        return self.name

class Person(models.Model):
    visited_countries = models.ManyToManyField(Country)

然后使用小部件呈现一个表单ModelSelect2Multiple

widgets = {
    'visited_countries': autocomplete.ModelSelect2Multiple(
        url='country-autocomplete')
}

提交的数据以单个值而不是数组的形式出现,因此该Person对象永远不会在表单保存时创建。

有没有办法让它作为一个数组进入并适当地创建多对多关系?

标签: pythondjangoautocompletedjango-autocomplete-light

解决方案


事实证明,问题在于我如何处理我认为的数据。我在做:

data = request.POST.dict()
form = PersonForm(data)

但是我应该这样做:

form = PersonForm(data=request.POST)

由于转换为字典采用第一个值。


推荐阅读