﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
10454	IntegrityError while deleting object with complex constraint	liangent	nobody	"i have models like this (the whole project is too complex and i dont want to put it here):

{{{
class P(Model):
    pass
class TC(Model):
    p = ForeignKey(P)

class S(Model):
    p = ForeignKey(P)
class CR(Model):
    s = ForeignKey(S)
    tc = ForeignKey(TC) # note: s.p always equals to tc.p
}}}

when i'm trying to delect a P object (with all its TC, S, CR sub-objects existing), an IntegrityError occurs, saying {{{ Cannot delete or update a parent row: a foreign key constraint fails (`proj/m_tc`, CONSTRAINT `p_id_refs_id_16cb2ff4a6a127c1` FOREIGN KEY (`p_id`) REFERENCES `main_p` (`id`))') }}}.

{{{
Environment:

Request Method: POST
Request URL: http://example.com/admin/m/p/2/delete/
Django Version: 1.1 pre-alpha
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.redirects',
 'django.contrib.comments',
 'django.contrib.flatpages',
 'notification',
 'avatar',
 'tagging',
 'announcements',
 'registration',
 'proj.cm',
 'proj.m',
 'proj.u',
 'proj.mk']
Installed Middleware:
('django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
 'django.contrib.csrf.middleware.CsrfMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.transaction.TransactionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'proj.middleware.CAM',
 'django.middleware.doc.XViewMiddleware')


Traceback:
File ""/usr/lib/python2.5/site-packages/django/core/handlers/base.py"" in get_response
  86.                 response = callback(request, *callback_args, **callback_kwargs)
File ""/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py"" in root
  450.                 return self.model_page(request, *url.split('/', 2))
File ""/usr/lib/python2.5/site-packages/django/views/decorators/cache.py"" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)
File ""/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py"" in model_page
  469.         return admin_obj(request, rest_of_url)
File ""/usr/lib/python2.5/site-packages/django/contrib/admin/options.py"" in __call__
  799.             return self.delete_view(request, unquote(url[:-7]))
File ""/usr/lib/python2.5/site-packages/django/contrib/admin/options.py"" in delete_view
  722.             obj.delete()
File ""/usr/lib/python2.5/site-packages/django/db/models/base.py"" in delete
  464.         delete_objects(seen_objs)
File ""/usr/lib/python2.5/site-packages/django/db/models/query.py"" in delete_objects
  1014.         del_query.delete_batch(pk_list)
File ""/usr/lib/python2.5/site-packages/django/db/models/sql/subqueries.py"" in delete_batch
  88.             self.do_query(self.model._meta.db_table, where)
File ""/usr/lib/python2.5/site-packages/django/db/models/sql/subqueries.py"" in do_query
  35.         self.execute_sql(None)
File ""/usr/lib/python2.5/site-packages/django/db/models/sql/query.py"" in execute_sql
  1996.             cursor.execute(sql, params)
File ""/usr/lib/python2.5/site-packages/django/db/backends/util.py"" in execute
  19.             return self.cursor.execute(sql, params)
File ""/usr/lib/python2.5/site-packages/django/db/backends/mysql/base.py"" in execute
  83.             return self.cursor.execute(query, args)
File ""/var/lib/python-support/python2.5/MySQLdb/cursors.py"" in execute
  166.             self.errorhandler(self, exc, value)
File ""/var/lib/python-support/python2.5/MySQLdb/connections.py"" in defaulterrorhandler
  35.     raise errorclass, errorvalue

Exception Type: IntegrityError at /admin/m/p/2/delete/
Exception Value: (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`proj/m_tc`, CONSTRAINT `p_id_refs_id_16cb2ff4a6a127c1` FOREIGN KEY (`p_id`) REFERENCES `m_p` (`id`))')
}}}"		closed	Database layer (models, ORM)	dev		duplicate			Unreviewed	0	0	0	0	0	0
