Set ModelForm integer field as unrequired - python

I currently have a ModelForm set up in Django, but would like to make one of the fields of the form unrequired. Here's my forms.py:
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
So I figured out how to override the 'required' attribute of my 'year' field, but when I go to submit a form with no year, I get:
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: ''
I'm assuming that int() is trying to parse an empty value and throwing an error. Is there any way to fix this? Is there a better way of making a field from a ModelForm unrequired?

Add blank=True, null=True to your field declaration im models.py (and don't forget to reflect this change in DB, by migration or manually).

Related

Django - one to one serializer Create function

I extended the default User model to ExtendedUser:
from django.db import models
from django.contrib.auth.models import User
class ExtendedUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
shirt_size = models.CharField(max_length=2)
User serializer:
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups', 'is_staff')
ExtendedUser serializer:
from api.resources.users.models.extended_user import ExtendedUser
from rest_framework import serializers
from django.contrib.auth.models import User
from api.resources.users.serializers.user import UserSerializer
class ExtendedUserSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer(read_only=False)
class Meta:
model = ExtendedUser
fields = ('url', 'shirt_size', 'user')
def create(self, validated_data):
user_data = validated_data.pop('user')
user = User.objects.create(**user_data)
return ExtendedUser.objects.create(user=user, **validated_data)
The main result should be that on submitting new ExtendedUser it will create a user too with one to one realation.
But I am getting this error:
User: myusername needs to have a value for field "user" before this
many-to-many relationship can be used.
Traceback:
Environment:
Request Method: POST
Request URL: http://localhost:8000/users/
Django Version: 1.10.4
Python Version: 2.7.12
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'api']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
39. response = get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
File "C:\Python27\lib\site-packages\rest_framework\viewsets.py" in view
83. return self.dispatch(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch
477. response = self.handle_exception(exc)
File "C:\Python27\lib\site-packages\rest_framework\views.py" in handle_exception
437. self.raise_uncaught_exception(exc)
File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch
474. response = handler(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\rest_framework\mixins.py" in create
21. self.perform_create(serializer)
File "C:\Python27\lib\site-packages\rest_framework\mixins.py" in perform_create
26. serializer.save()
File "C:\Python27\lib\site-packages\rest_framework\serializers.py" in save
214. self.instance = self.create(validated_data)
File "C:/Users/ozbar/PycharmProjects/usnccm/usnccm-api\api\resources\users\serializers\extended_user.py" in create
15. user = User.objects.create(**user_data)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in manager_method
85. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in create
397. obj = self.model(**kwargs)
File "C:\Python27\lib\site-packages\django\contrib\auth\base_user.py" in __init__
68. super(AbstractBaseUser, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in __init__
550. setattr(self, prop, kwargs[prop])
File "C:\Python27\lib\site-packages\django\db\models\fields\related_descriptors.py" in __set__
499. manager = self.__get__(instance)
File "C:\Python27\lib\site-packages\django\db\models\fields\related_descriptors.py" in __get__
476. return self.related_manager_cls(instance)
File "C:\Python27\lib\site-packages\django\db\models\fields\related_descriptors.py" in __init__
783. (instance, self.source_field_name))
Exception Type: ValueError at /users/
Exception Value: "<User: oz>" needs to have a value for field "user" before this many-to-many relationship can be used.
Validated_data object`s value on POST via django-rest web view:
{u'user': OrderedDict([(u'username', u'oz'), (u'email', u'oz.barshalom#gmail.com'), (u'groups', []), (u'is_staff', True)]), u'shirt_size': u'm'}
Okay for starters, the problem has nothing to do with django-rest-framework or your python version.
It seems to be an issue with django==1.10 as I simply tried:
User.objects.create(user="hello", email="333.22#eewofw.com", groups=[], is_staff=False)
in django's shell and received the exact same error. However, if we try newer versions of django, the problem does not persist.
I have noticed that when installing django using this command:
pip install django
It will install django==1.10 and not the latest version. If you mistakenly installed this older version, I suggest to uninstall django and then install the latest version:
pip uninstall django
pip install django==1.9.12
When using django==1.9.12, you need to remove groups completely from your UserSerializer and not provide it when doing your POST.

Django rest framework one to one relation Update serializer

I'm a beginner to the Django Rest Frame work. I have a problem from a long period i try to find a solution through many forums but unfortunately i didn't succeed. hope you help me
models.py
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
class Account(models.Model):
my_user=models.OneToOneField(User,on_delete=models.CASCADE)
statut=models.CharField(max_length=80)
date=models.DateField(auto_now=True,auto_now_add=False)
def __unicode__(self):
return self.my_user.first_name
Now i want to update Account serilizer .
Serializers .py
class AccountUpdateSerializer(serializers.ModelSerializer):
username=serializers.CharField(source ='my_user.username')
class Meta:
model= Account
fields=['id','username','statut','date']
def update(self, instance, validated_data):
print(instance)
instance.statut = validated_data.get('statut', instance.statut)
instance.my_user.username=validated_data['username']
return instance
Trace Back:
Environment:
Request Method: PUT
Request URL: http://127.0.0.1:9000/api/account/edit/1/
Django Version: 1.9
Python Version: 2.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'project',
'sponsors',
'contacts',
'medias',
'conferencier',
'competition',
'poste',
'account']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
474. response = self.handle_exception(exc)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/views.py" in handle_exception
434. self.raise_uncaught_exception(exc)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
471. response = handler(request, *args, **kwargs)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/generics.py" in put
256. return self.update(request, *args, **kwargs)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/mixins.py" in update
70. self.perform_update(serializer)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/mixins.py" in perform_update
74. serializer.save()
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/serializers.py" in save
187. self.instance = self.update(self.instance, validated_data)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/rest_framework/serializers.py" in update
907. setattr(instance, attr, value)
File "/home/asus/Documents/Gsource/gsource/local/lib/python2.7/site-packages/django/db/models/fields/related_descriptors.py" in __set__
207. self.field.remote_field.model._meta.object_name,
Exception Type: ValueError at /api/account/edit/1/
Exception Value: Cannot assign "{u'username': u'kais'}": "Account.my_user" must be a "User" instance.
Your update method is not called, because it is a method of the meta class of the serializer (AccountUpdateSerializer.Meta), not the serializer class AccountUpdateSerializer itself.
Here is how it should look:
class AccountUpdateSerializer(serializers.ModelSerializer):
username=serializers.CharField(source ='my_user.username')
class Meta:
model= Account
fields=['id','username','statut','date']
def update(self, instance, validated_data):
print(instance)
instance.statut = validated_data.get('statut', instance.statut)
instance.my_user.username = validated_data['username']
return instance
(Or did you just post your code incorrectly?)

django 1.7 admin: 'ModelMultipleChoiceField' object has no attribute 'limit_choices_to'

I'm working on a legacy django 1.4 project, porting it to django 1.7.
When accessing the django admin interface, in order to show user data I get the aforementioned error.
Environment:
Request Method: GET
Request URL: http://localhost:8000/admin/auth/user/1/
Django Version: 1.7.4
Python Version: 2.7.8
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.humanize',
'simple_autocomplete',
'paypal.standard.ipn',
'sorl.thumbnail',
'haystack',
'crispy_forms',
'siteprefs',
'sitegate',
'debug_toolbar',
'modeltranslation',
'rosetta',
# omitted: some project-specific apps
)
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
'django.middleware.locale.LocaleMiddleware',
'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 "MYENV/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "MYENV/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
583. return self.admin_site.admin_view(view)(*args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
105. response = view_func(request, *args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
52. response = view_func(request, *args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
206. return view(request, *args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/contrib/admin/options.py" in change_view
1456. return self.changeform_view(request, object_id, form_url, extra_context)
File "MYENV/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
29. return bound_func(*args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
105. response = view_func(request, *args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
25. return func.__get__(self, type(self))(*args2, **kwargs2)
File "MYENV/lib/python2.7/site-packages/django/db/transaction.py" in inner
394. return func(*args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/contrib/admin/options.py" in changeform_view
1419. form = ModelForm(instance=obj)
File "MYENV/lib/python2.7/site-packages/django/contrib/auth/forms.py" in __init__
145. super(UserChangeForm, self).__init__(*args, **kwargs)
File "MYENV/lib/python2.7/site-packages/django/forms/models.py" in __init__
333. limit_choices_to = formfield.get_limit_choices_to()
File "MYENV/lib/python2.7/site-packages/django/forms/models.py" in get_limit_choices_to
1126. if callable(self.limit_choices_to):
Exception Type: AttributeError at /admin/auth/user/1/
Exception Value: 'ModelMultipleChoiceField' object has no attribute 'limit_choices_to'
The self object in the offending line is a django.forms.models.ModelMultipleChoiceField instance (of course), the formfield in line 333 (see traceback) is instantiated as formfield = self.fields['groups'].
The error raises even on an empty db (with just one user). I've checked twice but there are no changes in the AUTH_MODEL, in the signals or any OneToOne link to the User model.
I've checked also the external apps for similar issues without any luck. Does anybody had the same issue in the past and can give me an hint on where to search for the source of this error? I'm still reluctant to report a bug to django since I cannot replicate it if I'm unable to define where the error is triggered.
EDIT:
I've verified that the problem arises in every model that has a foreign key (or a M2M, or a O2O). #Alasdair comment was a good suggestion but for sure I do not alter the queryset in all the models so the reason should be elsewhere.
I suggest you try disabling simple_autocomplete. There appears to be a similar issue with django-ajax-selects.

django-polymorphic admin "cannot create 'NoneType' instances"

I have been trying to make the basic django-polymorphic example to work.
models.py
from polymorphic import PolymorphicModel, ShowFieldContent
class Project(ShowFieldContent, PolymorphicModel):
topic = models.CharField(max_length=30)
class ArtProject(Project):
artist = models.CharField(max_length=30)
class ResearchProject(Project):
supervisor = models.CharField(max_length=30)
admin.py
from django.contrib import admin
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, PolymorphicChildModelFilter
from rapidhealth.core.models import Project, ArtProject, ResearchProject
class ProjectChildAdmin(PolymorphicChildModelAdmin):
base_model = Project
class ProjectAdmin(PolymorphicParentModelAdmin):
base_model = Project
list_filter = (PolymorphicChildModelFilter,)
child_models = (
(Project, ProjectChildAdmin),
(ArtProject, ProjectChildAdmin),
(ResearchProject, ProjectChildAdmin),
)
admin.site.register(Project, ProjectAdmin)
Now when trying to create a new "project" in the admin site I get:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admincore/project/add/?ct_id=42
Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'sekizai',
'mptt',
'south',
'reversion',
'rest_framework',
'polymorphic',
'rapidhealth.core',
'debug_toolbar')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Traceback:
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
372. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
202. return view(request, *args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/polymorphic/admin.py" in add_view
225. return real_admin.add_view(request, form_url, extra_context)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
25. return bound_func(*args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
21. return func(self, *args2, **kwargs2)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/db/transaction.py" in inner
223. return func(*args, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view
984. ModelForm = self.get_form(request)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/polymorphic/admin.py" in get_form
484. return super(PolymorphicChildModelAdmin, self).get_form(request, obj, **kwargs)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in get_form
465. return modelform_factory(self.model, **defaults)
File "/home/lucas-fievet/.virtualenvs/rh/local/lib/python2.7/site-packages/django/forms/models.py" in modelform_factory
424. return type(form)(class_name, (form,), form_class_attrs)
Exception Type: TypeError at /admincore/project/add/
Exception Value: cannot create 'NoneType' instances
Does anyone understand what the problem is?
I have tried all kind of changes. When using the default django admin I can create a project.
Thank you,
Lucas
It turned out that specifying explicitly the form to use solved the problem:
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
class ProjectChildAdmin(PolymorphicChildModelAdmin):
base_model = Project
base_form = ProjectForm
For some reason the form is not automatically generated.

django when adding data from admin interface: TypeError at admin/... unicode object not callable

I'm getting an error when trying to save to the following model using the admin interface:
models.py
class Answer(models.Model):
a = models.TextField(primary_key=True)
gloss = models.TextField(blank=True)
clean = models.TextField(blank=True)
count = models.IntegerField(blank=True)
p = models.IntegerField(blank=True)
def __unicode__(self):
return u"%s" % self.a
class Meta:
db_table = u'answers'
here's the error message that shows up on the admin interface:
Environment:
Request Method: POST
Request URL: http://localhost:8000/admin/emotions/answer/add/
Django Version: 1.4 pre-alpha SVN-16322
Python Version: 2.6.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'emo20qBrowser.emotions']
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 "/home/abe/bin/django-trunk/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/abe/bin/django-trunk/django/contrib/admin/options.py" in wrapper
316. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/home/abe/bin/django-trunk/django/views/decorators/cache.py" in _wrapped_view_func
77. response = view_func(request, *args, **kwargs)
File "/home/abe/bin/django-trunk/django/contrib/admin/sites.py" in inner
196. return view(request, *args, **kwargs)
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapper
25. return bound_func(*args, **kwargs)
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/home/abe/bin/django-trunk/django/utils/decorators.py" in bound_func
21. return func(self, *args2, **kwargs2)
File "/home/abe/bin/django-trunk/django/db/transaction.py" in inner
211. return func(*args, **kwargs)
File "/home/abe/bin/django-trunk/django/contrib/admin/options.py" in add_view
871. if form.is_valid():
File "/home/abe/bin/django-trunk/django/forms/forms.py" in is_valid
121. return self.is_bound and not bool(self.errors)
File "/home/abe/bin/django-trunk/django/forms/forms.py" in _get_errors
112. self.full_clean()
File "/home/abe/bin/django-trunk/django/forms/forms.py" in full_clean
269. self._post_clean()
File "/home/abe/bin/django-trunk/django/forms/models.py" in _post_clean
331. self.instance.clean()
Exception Type: TypeError at /admin/emotions/answer/add/
Exception Value: 'unicode' object is not callable
Okay, I think I figured it out... I'm using a variable/column called "clean". Django's admin interface has a method called "clean()" also, which does some kind of validation. It appears that there was some kind of naming conflict so I changed the variable to name to "cleaned" and then to make sure that it knows what database field to use (I'm using a legacy/preexisting db), I added a db_column option:
cleaned = models.TextField(blank=True,db_column="clean")
It would have been nice to know that "clean" was a reserved identifier in django but at least I only wasted half a day on this django stuff which ostensibly makes database operations easier. To be fair, I just started django this morning and if I would have found and answer on stackoverflow it would have been a breeze to fix.
If anyone knows a better way to handle this, let me know...

Categories