Hi,

Problem: sometimes (not always) get_or_create is trying to create
duplicated record.

Model:

class online(models.Model):
     postac = models.OneToOneField('postac.postacie',
related_name="lista_online")
     data = models.DateTimeField()

Code snippet:

o =
online.objects.filter(postac__user=request.user).exclude(postac=request.session['postac'])
o.delete()
o, c = online.objects.get_or_create(postac=request.session['postac'],
defaults={ 'data' : datetime.now()+timedelta(minutes=15) })
if not c:
    o.data = datetime.now()+timedelta(minutes=15)
    o.save()

Database schema:

  Column   |           Type           |
Modifiers
-----------+--------------------------
+-----------------------------------------------------------------
 id        | integer                  | not null default
nextval('spoleczniak_online_id_seq'::regclass)
 postac_id | integer                  | not null
 data      | timestamp with time zone | not null
Indexes:
    "spoleczniak_online_pkey" PRIMARY KEY, btree (id)
    "spoleczniak_online_postac_id_key" UNIQUE, btree (postac_id)
Foreign-key constraints:
    "spoleczniak_online_postac_id_fkey" FOREIGN KEY (postac_id)
REFERENCES postac_postacie(id) DEFERRABLE INITIALLY DEFERRED


PostgreSQL error:

Sep 28 12:35:42 postgres postgres[7238]: [2-1] ERROR:  23505:
duplicate key value violates unique constraint
"spoleczniak_online_postac_id_key"
Sep 28 12:35:42 postgres postgres[7238]: [2-2] DETAIL:  Key
(postac_id)=(109387) already exists.
Sep 28 12:35:42 postgres postgres[7238]: [2-3] LOCATION:
_bt_check_unique, nbtinsert.c:388
Sep 28 12:35:42 postgres postgres[7238]: [2-4] STATEMENT:  INSERT INTO
"spoleczniak_online" ("postac_id", "data") VALUES (109387,
E'2010-09-28 12:50:40.813883')

Database of course is PostgreSQL, Django 1.2.3 (btw. nice version
number :)), psycopg2 ... what else? So, am I doing something wrong?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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