当前位置:  开发笔记 > 编程语言 > 正文

django错误'太多值解包'

如何解决《django错误'太多值解包'》经验,为你挑选了1个好方法。

我正在通过构建一个简单的食谱应用程序来学习Django.我有一个1表模型,使用配方类别的'choices'字段选项,而不是使用第二'类别'表和外键关系.所以我通过syncdb创建了db表,然后用测试数据加载了表.当我去管理员并点击"食谱"链接以尝试查看食谱时,我收到以下错误:

Template error

In template /var/lib/python-support/python2.6/django/contrib/admin/templates/admin/change_list.html, error at line 34
Caught an exception while rendering: too many values to unpack

如果有人能够阐明这个神秘的错误,那就太棒了.Db是Sqlite.Django版本是1.0.该模型如下:

from django.db import models

class Recipe(models.Model):
    CATEGORY_CHOICES = (
        (1, u'Appetizer'),
        (2, u'Bread'),
        (3, u'Dessert'),
        (4, u'Drinks'),
        (5, u'Main Course'),
        (6, u'Salad'),
        (7, u'Side Dish'),
        (8, u'Soup'),
        (9, u'Sauce/Marinade'),
        (10, u'Other'),        
    )
    name = models.CharField(max_length=255)
    submitter = models.CharField(max_length=40)
    date = models.DateTimeField()
    category = models.SmallIntegerField(choices=CATEGORY_CHOICES)
    ingredients = models.TextField()
    directions = models.TextField()
    comments = models.TextField(null=True, blank=True)

Kreychek.. 19

编辑:根据kibibu的修正更新.

我遇到了我认为是同样的错误,产生了这样的信息:

Caught ValueError while rendering: too many values to unpack

我的表格类如下:

class CalcForm(forms.Form):
    item = forms.ChoiceField(choices=(('17815', '17816')))

请注意,我choices在这里输入一个元组.Django官方文档如下所示为choicesarg:

2元组的可迭代(例如,列表或元组),用作此字段的选项.此参数接受与模型字段的choices参数相同的格式.

src:https://docs.djangoproject.com/en/1.3/ref/forms/fields/#django.forms.ChoiceField.choices

通过观察文档和使用元组列表解决了这个问题:

class CalcForm(forms.Form):
    item = forms.ChoiceField(choices=[('17815', '17816')])

请注意,虽然文档声明可以使用任何正确形式的迭代,但是2元组的元组不起作用:

item = forms.ChoiceField(choices=(('17815', '17816'), ('123', '456')))

这产生了与以前相同的错误.

课程:错误发生.



1> Kreychek..:

编辑:根据kibibu的修正更新.

我遇到了我认为是同样的错误,产生了这样的信息:

Caught ValueError while rendering: too many values to unpack

我的表格类如下:

class CalcForm(forms.Form):
    item = forms.ChoiceField(choices=(('17815', '17816')))

请注意,我choices在这里输入一个元组.Django官方文档如下所示为choicesarg:

2元组的可迭代(例如,列表或元组),用作此字段的选项.此参数接受与模型字段的choices参数相同的格式.

src:https://docs.djangoproject.com/en/1.3/ref/forms/fields/#django.forms.ChoiceField.choices

通过观察文档和使用元组列表解决了这个问题:

class CalcForm(forms.Form):
    item = forms.ChoiceField(choices=[('17815', '17816')])

请注意,虽然文档声明可以使用任何正确形式的迭代,但是2元组的元组不起作用:

item = forms.ChoiceField(choices=(('17815', '17816'), ('123', '456')))

这产生了与以前相同的错误.

课程:错误发生.


`item = forms.ChoiceField(choices =(('17815','17816')))`不是元组的元组.这是括号中的元组.你需要做`item = forms.ChoiceField(choices =((''17815','17816'),))`.请注意逗号.当然,您的第二个示例是正确的格式,但仍然无法正常工作.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有