Thursday, January 3, 2013

Django admin save error: get_db_prep_value() got an unexpected keyword argument 'connection'

I really struggling with my understanding of the following issue and how to resolve


----------------------------------------


When I try and save (using the Django standard admin interface) I get the following error...

    TypeError at /admin/web/campaign/dc6eb21f-87fa-462f-88af-416cf6be37f6/
   
    get_db_prep_value() got an unexpected keyword argument 'connection'

Could someone explain this to me, why and maybe a possible solution? I'm assuming it is something to do with my custom HibernateBooleanField field.

Full error and details below.

**Error**


    Environment:
   
   
    Request Method: POST
    Request URL: http://127.0.0.1:8000/admin/web/campaign/dc6eb21f-87fa-462f-88af-416cf6be37f6/
   
    Django Version: 1.4.2
    Python Version: 2.7.2
    Installed Applications:
    ('django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
     'django.contrib.flatpages',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'grappelli.dashboard',
     'grappelli',
     'django.contrib.admin',
     'django.contrib.admindocs',
     'web')
    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 "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
      111.                         response = callback(request, *callback_args, **callback_kwargs)
    File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in wrapper
      366.                 return self.admin_site.admin_view(view)(*args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view
      91.                     response = view_func(request, *args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
      89.         response = view_func(request, *args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/contrib/admin/sites.py" in inner
      196.             return view(request, *args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapper
      25.             return bound_func(*args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view
      91.                     response = view_func(request, *args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in bound_func
      21.                 return func(self, *args2, **kwargs2)
    File "/Library/Python/2.7/site-packages/django/db/transaction.py" in inner
      209.                 return func(*args, **kwargs)
    File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in change_view
      1054.                 self.save_model(request, new_object, form, True)
    File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in save_model
      709.         obj.save()
    File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save
      463.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
    File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save_base
      529.                             rows = manager.using(using).filter(pk=pk_val)._update(values)
    File "/Library/Python/2.7/site-packages/django/db/models/query.py" in _update
      560.         return query.get_compiler(self.db).execute_sql(None)
    File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
      986.         cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
    File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
      808.             sql, params = self.as_sql()
    File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in as_sql
      951.                 val = field.get_db_prep_save(val, connection=self.connection)
    File "/Library/Python/2.7/site-packages/django/db/models/fields/__init__.py" in get_db_prep_save
      292.                                       prepared=False)
   
    Exception Type: TypeError at /admin/web/campaign/dc6eb21f-87fa-462f-88af-416cf6be37f6/
    Exception Value: get_db_prep_value() got an unexpected keyword argument 'connection'



**model**

    class Campaign(models.Model):
        campaignid = models.CharField(max_length=255, primary_key=True, db_column='campaignID')
        name = models.CharField(max_length=105)
        active = HibernateBooleanField(default=False)
        created = models.DateTimeField()
        modified = models.DateTimeField(null=True, blank=True)
        companyid = models.ForeignKey(Company, null=True, db_column='companyID', blank=True)
   
        class Meta:
            db_table = u'campaign'
   
   
        def __unicode__(self):
            return self.name
   
    class HibernateBooleanField(models.BooleanField):
   
        __metaclass__ = models.SubfieldBase
   
        def get_internal_type(self):
            return "HibernateBooleanField"
   
        def db_type(self):
            return 'bit(1)'
   
        def to_python(self, value):
            if value in (True, False): return value
            if value in ('t', 'True', '1', '\x01'): return True
            if value in ('f', 'False', '0', '\x00'): return False
   
        def get_db_prep_value(self, value):
            return 0x01 if value else 0x00

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/DGPWdVBIwu4J.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment