Hi,
   Am rather new to django and this error makes no sense to me..

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/
base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert,
force_update=force_update)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/
base.py", line 522, in save_base
    manager.using(using).filter(pk=pk_val).exists())):
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/
query.py", line 550, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/
query.py", line 568, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/
query.py", line 1194, in add_q
    can_reuse=used_aliases, force_having=force_having)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/
query.py", line 1129, in add_filter
    connector)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/
where.py", line 67, in add
    value = obj.prepare(lookup_type, value)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/
where.py", line 316, in prepare
    return self.field.get_prep_lookup(lookup_type, value)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/
__init__.py", line 292, in get_prep_lookup
    return self.get_prep_value(value)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/
__init__.py", line 479, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: '192.168.8.123'

Rather what i don't understand is why django is trying to int casting
the string... find attached the models.py file and the script am
running in python manage.py shell.

models.py:

#!/usr/bin/env python
import datetime
from django.db import models

class Lock(models.Model):

#    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100,unique=True)
    #value = models.IntegerField(null=True)
    # No point.. if the record exists, there's  a lock, else there
isn't.
    info = models.CharField(max_length=1000)
    timestamp = models.DateTimeField(auto_now=True)

    @classmethod
    def clean(self, name, age=0):
        # Get a datetime that is offset by 'age' seconds
        dt = datetime.datetime.now() - datetime.timedelta(seconds=age)

        # Query and delete
        old = Lock.objects.filter(name=name , timestamp__lte=dt)
        old.delete()


Here's the code that triggers the error.

from locker.models import *

name = "192.168.8.123"
info = "Migrating VIP %s at %s "%("234.34.32.342","12.34.43.22")
lock = Lock(name,info)
lock.save()


now from what i understand django tries to search the table with the
primary key as the name field. But django documentation says it by
default creates an automatic  primary key field 'id'. My question is
why does it expect it to be explicitly passed??

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

Reply via email to