2011-08-29 3 views
0

현재 ModelForm이 장고에 설정되어 있지만 양식 필드 중 하나를 필요하지 않게 만들고 싶습니다.ModelForm 정수 필드를 불필요한 것으로 설정하십시오.

from django.forms import ModelForm 
from add_flair.models import User 


class UserForm(ModelForm): 

    class Meta: 
     model = User 

    def __init__(self, *args, **kwargs): 
     super(UserForm, self).__init__(*args, **kwargs) 
     self.fields['year'].required = False 

그래서 내가 '년'필드의 '요구'속성을 재정의하는 방법을 알아 냈,하지만 난 아무 올해 양식을 제출 갈 때, 내가 얻을 : 여기 내 forms.py의

Environment: 

Request Method: POST 
Request URL: http://127.0.0.1:9999/flair/add/ 

Django Version: 1.3 
Python Version: 2.6.6 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'project.add_flair'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/coreyf/dev/reddit-calpoly-addflair/project/../project/add_flair/views.py" in add 
    14.    save_user(form, confirm_num) 
File "/home/coreyf/dev/reddit-calpoly-addflair/project/../project/add_flair/views.py" in save_user 
    42.  user.save() 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/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-1.3-py2.6.egg/django/db/models/base.py" in save_base 
    543.       for f in meta.local_fields if not isinstance(f, AutoField)] 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 
    28.    return func(*args, **kwargs) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 
    28.    return func(*args, **kwargs) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/__init__.py" in get_db_prep_save 
    276.   return self.get_db_prep_value(value, connection=connection, prepared=False) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 
    53.    return func(*args, **kwargs) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 
    53.    return func(*args, **kwargs) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/__init__.py" in get_db_prep_value 
    271.    value = self.get_prep_value(value) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/__init__.py" in get_prep_value 
    876.   return int(value) 

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

int()가 빈 값을 파싱하고 오류를 발생 시키려고한다고 가정합니다. 이 문제를 해결할 방법이 있습니까? 필요하지 않은 ModelForm에서 필드를 만드는 더 좋은 방법이 있습니까?

답변

2

blank=True, null=True을 필드 선언 im models.py에 추가하십시오 (이 변경 사항은 마이그레이션 또는 수동으로 DB에 반영해야 함).

+0

감사합니다. 또한 "blank = True"에 대해 배운 후에는 required = False 및 super() 코드가 필요 없다는 것을 알게되었습니다. –

관련 문제