A foreignkey in a model with a customised objects manager is causing
an exception when that parent model is saved.

Model 'SuperDelegate' has a boolean field 'is_active'. 'Delegate'
model has a ForeignKey to SuperDelegate. I only want to ever show
active SuperDelegates so the objects manager has the default query
is_active=True.  Saving a SuperDelegate.is_active = False is fine. But
trying to save is.active = True (having been false) throws the
following exception:


>>> sd = SuperDelegate.all.all()[0]    # a manager to pull out is_active=False 
>>> instances
>>> sd.is_active
False
>>> sd.is_active = True
>>> sd.save()
Traceback (most recent call last):
  File "<console>", line 1, in ?
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/base.py", line 307, in
save
    self.save_base(force_insert=force_insert,
force_update=force_update)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/base.py", line 379, in
save_base
    result = manager._insert(values, return_id=update_pk)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/manager.py", line 138, in
_insert
    return insert_query(self.model, values, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/query.py", line 888, in
insert_query
    return query.execute_sql(return_id)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/sql/subqueries.py", line
308, in execute_sql
    cursor = super(InsertQuery, self).execute_sql(None)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/models/sql/query.py", line 1700,
in execute_sql
    cursor.execute(sql, params)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/
lib/python2.4/site-packages/django/db/backends/util.py", line 19, in
execute
    return self.cursor.execute(sql, params)
IntegrityError: duplicate key value violates unique constraint
"delegate_superdelegate_pkey"


Removing the default is_active=True objects manager removes this
problem, so it's fine i can use a different manager for each
SuperDelegate listing. But what's going on here? (postgresql 8.3/
Django 1.0)

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

Reply via email to