﻿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
11116	delete() triggers an error on proxy model instances	samuel.adam@…	nobody	"{{{
>>> from hit.vote.models import VoteProxy

>>> inst = VoteProxy.objects.get(pk=2)

>>> inst.delete()
------------------------------------------------------------
Traceback (most recent call last):
  File ""<ipython console>"", line 1, in <module>
  File ""/home/sam/projects/djangotrunk-env/lib/python2.5/site-packages/django/db/models/base.py"", line 557, in delete
    self._collect_sub_objects(seen_objs)
  File ""/home/sam/projects/djangotrunk-env/lib/python2.5/site-packages/django/db/models/base.py"", line 544, in _collect_sub_objects
    parent_obj = getattr(self, link.name)
AttributeError: 'NoneType' object has no attribute 'name'
}}}

The problem is in django/db/models/base.py

http://code.djangoproject.com/browser/django/trunk/django/db/models/base.py#L151
{{{
#!python
151 	                elif not is_proxy:
152 	                    attr_name = '%s_ptr' % base._meta.module_name
153 	                    field = OneToOneField(base, name=attr_name,
154 	                            auto_created=True, parent_link=True)
155 	                    new_class.add_to_class(attr_name, field)
156 	                else:
157 	                    field = None
158 	                new_class._meta.parents[base] = field
}}}

{{{
>>> inst._meta.parents
{<class 'voting.models.Vote'>: None}
}}}

http://code.djangoproject.com/browser/django/trunk/django/db/models/base.py#L541
{{{
#!python
541 	        parent_stack = self._meta.parents.values()
542 	        while parent_stack:
543 	            link = parent_stack.pop()
544 	            parent_obj = getattr(self, link.name)
}}}

{{{
>>> inst._meta.parents.values()
[None]
}}}"		closed	Database layer (models, ORM)	dev		fixed	proxy, model, delete	andy@…	Unreviewed	1	0	0	0	0	0
