2011-05-07 4 views
1

Я использовал формы Django таким образом и получил сообщение об ошибке: Ошибка: invalid literal for int() with base 10: 'check 'просмотров в Django

#this is forms.py  
from django import forms 

    class PersonalInfo(forms.Form): 
     Name = forms.CharField(max_length=20) 
     Email_ID = forms.EmailField(required=False) 
     Address = forms.CharField(max_length=50,required=False) 
     Contact_Phone = forms.CharField(max_length=20) 
     Image = forms.FileField(required=False) 

В PersonalInfo используется в register.html

#This is view.py, register calling register.html 
    def register(request): 
     form = PersonalInfo() 
     return render_to_response('register.html', {'form':form}, context_instance=RequestContext(request)) 

В register.html это способ, которым я буду использовать:

  {% if form.errors %} 
      <p style="color: red;"> 
       Please correct the error{{ form.errors|pluralize }} below. 
      </p> 
      {% endif %} 

      <form action="/uregister/" method="post"> 
       <table> 
        {{ form.as_table }} 
       </table> 
       <input type="submit" value="Submit"> 
      </form> 

Это мнения об урегах стер:

def uregister(request): 
    if request.method == 'POST': 
    form = PersonalInfo(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
       per_job = Personal(cd['Name'], cd['Email_ID'], cd['Address'], cd['Contact_Phone'], cd['Image']) 
       per_job.save() 
       return HttpResponseRedirect('/') 
     else: 
      form = PersonalInfo() 
      return render_to_response('register.html', {'form': form}, context_instance=RequestContext(request)) 

Это персональный модель models.py:

class Personal(models.Model): 
    name = models.CharField(max_length=20) 
    email = models.EmailField(blank=True,null=True) 
    address = models.CharField(max_length=50,blank=True,null=True) 
    contact = models.CharField(max_length=20) 
    pic = models.FileField(upload_to='image/',blank=True,null=True) 

Ошибки я получаю:

invalid literal for int() with base 10: 'check' 

и

Exception Type: ValueError 
Exception Value: invalid literal for int() with base 10: 'check' 
Exception Location: /usr/local/lib/python2.6/dist-packages/django/db/models/fields/__init__.py in get_prep_value, line 479 

Check является имя, которое я дал как в манекене данные. Может ли кто-нибудь сказать мне, где я иду не так? Пожалуйста.

Обновление: Трассировка

Traceback: 
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/nagaraj/ghar/gharnivas/views.py" in uregister 
    49.     per_job.save() 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/base.py" in save 
    460.   self.save_base(using=using, force_insert=force_insert, force_update=force_update) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/base.py" in save_base 
    522.       manager.using(using).filter(pk=pk_val).exists())): 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py" in filter 
    550.   return self._filter_or_exclude(False, *args, **kwargs) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py" in _filter_or_exclude 
    568.    clone.query.add_q(Q(*args, **kwargs)) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py" in add_q 
    1172.        can_reuse=used_aliases, force_having=force_having) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py" in add_filter 
    1107.     connector) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/where.py" in add 
    67.    value = obj.prepare(lookup_type, value) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/where.py" in prepare 
    316.    return self.field.get_prep_lookup(lookup_type, value) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/__init__.py" in get_prep_lookup 
    292.    return self.get_prep_value(value) 
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/__init__.py" in get_prep_value 
    479.   return int(value) 

Exception Type: ValueError at /uregister/ 
Exception Value: invalid literal for int() with base 10: 'check 

ответ

2

Я думаю, что проблема в линии

per_job = Personal(cd['Name'], cd['Email_ID'], cd['Address'], cd['Contact_Phone'], cd['Image']) 

Я не знаю, если это возможно, чтобы создать экземпляр модели только с позиционными параметрами, но он не упоминается в документах. Вы должны быть using keyword parameters:

per_job = Personal(name=cd['Name'], email=cd['Email_ID'], etc. 

Ошибка вы видите, вероятно, является результатом попытки Ассинг не целое значение поля базы данных по умолчанию с объекта ID, так что это может быть вызвано этим.


Что касается других вещей:

  • Изображение не сохраняется, вероятно, потому, что вы не using form attributeenctype="multipart/form-data", который требуется для корректной обработки загруженных файлов.
  • Ошибки не отображаются, скорее всего, потому, что они содержатся в форме после проверки, и вы заменяете это пустым экземпляром в ветке else: вашего uregister.
+0

Благодарим вас за ответ. Теперь ошибка 'invalid literal for int() с базой 10: 'check'' удалена. Но, несмотря на то, что запись сохранена. ** Изображение ** не сохраняется, а также ** ошибка ** (ы) формы не отображается с кнопкой отправки, нажатой с данными в текстовом поле :( –

+0

@padmaprasad: О. Есть и другие вещи, которые могут помочь а также, я обновил ответ. – che

+0

Большое спасибо .. Он отлично работает :) –

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