尝试make clean_data()时出错! Django的

时间:2010-07-27 20:30:21

标签: python django

必须是简单的解决方案。但我没有看到它。请帮我。看起来'gorod'在请求中,但当我尝试cleaning_data()时,它给了我KeyError

KeyError at /ticket/

'gorod'

Request Method:     POST
Request URL:    http://localhost:8000/ticket/
Exception Type:     KeyError
Exception Value:    

'gorod'

Exception Location:     C:\Documents and Settings\POLINOM\web\website\orders\views.py in SaveOrder2, line 93
Python Executable:  C:\Python26\python.exe
Python Version:     2.6.5


Traceback:
File "C:\Python26\lib\site-packages\django\core\handlers\base.py" in get_response
  92.                 response = callback(request, *callback_args, **callback_kwargs)
File "C:\Documents and Settings\POLINOM\web\website\orders\views.py" in ticket
  136.             adr_form=MakeForm2(request)
File "C:\Documents and Settings\POLINOM\web\website\orders\views.py" in MakeForm2
  58.             SaveOrder2(request,form)
File "C:\Documents and Settings\POLINOM\web\website\orders\views.py" in SaveOrder2
  95.     gorod=form.cleaned_data['gorod']

Exception Type: KeyError at /ticket/
Exception Value: 'gorod'

我的表格:

class MumForm(AddressForm):
    CITY_CHOICES = (
                    (0,'August,11 - Washington, BlackCat'),
                    (1,'August,12 - Philadelphia, WorldLiveCafe'),
                    (2,'August,13 - New York, Irving Plaza'),
                    (3,'August,14 - Boston, Middle East'),
                    (4,'August,15 - Montreal, Cabaret Du Musee Juste Pour Rire'),
                    (5,'August,16 - Toronto, Mod club'),
                    (6,'August,17 - Cleveland, Beachland Tavern'),
                    (7,'August,18 - ------------------------'),
                    (9,'August,19 - ------------------------'),
                    (10,'August,20 - Atlanta, Masquerade'),
                    (11,'August,22 - Chicago, Empty Bottle'),
                    (12,'August,23 - Milwaukee, Shank Hall'),
                    (13,'August,24 - Minneapolis, Varsity (promoted by 1st Avenue)'),
                    (14,'August,25 - Winnipeg, Cowboys'),
                    (15,'August,27 - Edmonton, The Starlite Room'),
                    (16,'August,28 - Calgary, The Den'),
                    (17,'August,29 - Vancouver, Commodore Ballroom'),
                    (18,"August,31 - Seattle, Neumo's"),

                    (19,'September,01 - Portland, Howthorne Theatre'),
                    (20,'September,02 - San Francisco, Bottom Of The Hill'),
                    (21,'September,03 - Los Angeles, The Roxy'),
                    (22,'September,04 - Salt Lake City, Urban Lounge'),
                    (23,'September,05 - Denver, Bluebird Theatre'),
                    (24,'September,06 - Kansas City, The Record Bar'),
                    (25,'September,07 - Dallas, The Loft'),
                    (26,"September,08 - Austin, Emo's"),
        )
    gorod = forms.ChoiceField(choices=CITY_CHOICES, label="Выберите город в котором вы хотите пойти на концерт")
    note = forms.CharField(max_length=1500,label=u'Заметка',widget=forms.Textarea)

这是继承自ather形式:

class AddressForm(forms.Form):
    address = forms.CharField(label=u"Адрес",max_length=200,required=True,widget=forms.TextInput(attrs={'size':60}))
    city = forms.CharField(label=u"Город",max_length=50,required=True)
    country = forms.ChoiceField(label=u"Страна",required=True,choices=COUNTRIES)
    state = forms.ChoiceField(label=u"Штат/Провинция",required=False, choices=StateProvince().get_all_states(), error_messages={'invalid_choice':u'нет среди допустимых значений. Пожалуйста, выберите правильный вариант'}) 
    zip = forms.CharField(label=u"Почтовый код",max_length=10,widget=forms.TextInput(attrs={'size':8}),required=True)
    phone_number = forms.CharField(label=u"Номер телефона",required=False)

我正在使用两种模式:

class Order(models.Model):
    STATUS_CHOICES=[
                    (1, 'Send'),
                    (0, 'Not_send'),                    
                ]
    user=models.ForeignKey(User)
    product=models.ForeignKey(Product)
    status = models.CharField(max_length=1,choices=STATUS_CHOICES)
    country = models.CharField(max_length=2)
    state = models.CharField(max_length=50) 
    zip = models.CharField(max_length=10)
    city = models.CharField(max_length=50)
    street = models.CharField(max_length=200)
    phone=models.CharField(max_length=20)


    def __unicode__(self):
        return 'Order by ' + self.user

class TicketProp(models.Model):
    order=models.ForeignKey(Order)
    note=models.CharField(max_length=1500)
gorod=models.CharField(max_length=2)

1 个答案:

答案 0 :(得分:1)

也许您的AddressForm课程遗漏了gorod字段?表单根据表单中的字段填充.cleaned_data属性(后者之后没有()! - );例如,在当前django.forms的{​​{3}}中,您将在第274行看到

for name, field in self.fields.items():

并且在循环体中填充了.cleaned_data dict。

那么你的AddressForm代码(以及它可能适用的模型代码)是什么......?