为什么这个Django错误“太多值解包”?

时间:2017-01-06 22:25:53

标签: jquery ajax django django-views

我有一个Django视图,我通过模板中的Ajax函数调用。我的模板有一个'Country'下拉和一个'Region'(或State)下拉。当用户单击Country时,我想使用Ajax函数来获取该国家/地区中的所有区域(或状态),并使用该数据填充“Region”下拉列表。但是,当我的视图执行并尝试返回查询集时,我收到此错误:

ValueError: too many values to unpack

这是模板标签和Ajax功能:

# demo.html
<select id="id_country" name="country" onchange="getState(this.value);">
  <option value="" selected="selected">Please choose...</option>
  <option value="US">United States</option>
  <option value="GB">United Kingdom</option>
  <option value="CA">Canada</option>
</select>

<script>
function getState(val) {
    $.ajax({
    type: "GET",
    url: "/demo/get_region",
    data:'country_id='+val,
    success: function(data){
         $("#id_region").html(data);
    }
    });
}
</script>

以下是观点:

# views.py
from location.models import CountryRegion
def get_region(request):
    country_id = request.GET.get('country_id', None)
    country_region = CountryRegion.objects.filter(country_cd=country_id)
    # Error occurs here on the return
    return country_region

模型(我意识到它没有标准化)看起来像这样:

class CountryRegion(models.Model):
    country_cd = models.CharField(max_length=2)
    country_name = models.CharField(max_length=50)
    region_cd = models.CharField(max_length=3)
    region_name = models.CharField(max_length=50)

数据库记录如下所示:

id    country_cd    country_name    region_cd   region_name
59    US            United States   NY          New York

为什么会出现此错误?如果国家代码是“美国”,我会 返回50个实例,每个州一个。是否有一些限制 Django视图可以返回的数据量?

1 个答案:

答案 0 :(得分:0)

你必须先导入json,
import json
然后返回HttpResponse(             json.dumps(country_region),             CONTENT_TYPE =&#34;应用/ JSON&#34;         )