我正在通过构建一个简单的食谱应用程序来学习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官方文档如下所示为choices
arg:
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')))
这产生了与以前相同的错误.
课程:错误发生.
编辑:根据kibibu的修正更新.
我遇到了我认为是同样的错误,产生了这样的信息:
Caught ValueError while rendering: too many values to unpack
我的表格类如下:
class CalcForm(forms.Form): item = forms.ChoiceField(choices=(('17815', '17816')))
请注意,我choices
在这里输入一个元组.Django官方文档如下所示为choices
arg:
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')))
这产生了与以前相同的错误.
课程:错误发生.