2013-01-23 7 views
0

models.py:Сохраните данные из формы в базе данных. Ключевая ошибка

class Data(models.Model): 
    name = models.CharField(max_length=250) 
    is_big = models.BooleanField(default=False) 

forms.py:

class DataForm(ModelForm): 

    class Meta: 
     model = Data 
     exclude = ['is_big'] 

Вместо is_big из моделей формирования я создал (в шаблоне):

<div class="id_is_big-control-group control-group"> 

      <div class="controls"> 
       <label class="checkbox"> 
        <input type="checkbox" disabled="disabled" checked="checked" name="is_big" id="id_is_big" /> <span>Is big?</span> 
       </label> 

     </div> 

Как сохранить это значение в базе данных?

form = DataForm(request.POST) 
if form.is_valid(): 
    d = form.save(commit=False) 
    d.is_big = form.cleaned_data['is_big'] 
    d.save() 

возвращаемая ошибка: KeyError на сайте// '' is_big

ответ

1

Вы исключили is_big из модели формы. Вот почему его нет в cleaned_data. Вы должны получить значение от POST:

is_big = request.POST.get('is_big') 
+0

Я создал пользовательский ввод (это в моем вопросе). Я исключил is_big – webfanks

+0

Почему вы исключили его, когда вам это нужно в форме? –

+0

Потому что я не хочу использовать сгенерированный код из «форм моделей». Я добавил этот HTML-код в свой мануал – webfanks

Смежные вопросы