Opened 14 years ago
Closed 14 years ago
#16962 closed Bug (duplicate)
DoesNotExist when checking for related_name on OneToOneField
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 1.3 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Reproducible test case:
class Example(models.Model):
parent = models.OneToOneField('self', null=True, blank=True,
related_name='child')
def __unicode__(self):
return "%s" % self.function
Console
>>> example = Example.objects.create()
>>> example2 = Example.objects.create(parent=example)
>>> example2.child # should return None, instead throws traceback
/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/db/models/fields/related.pyc in __get__(self, instance, instance_type)
238 db = router.db_for_read(self.related.model, instance=instance)
--> 239 rel_obj = self.related.model._base_manager.using(db).get(**params)
240 setattr(instance, self.cache_name, rel_obj)
241 return rel_obj
/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/db/models/query.pyc in get(self, *args, **kwargs)
347 if not num:
348 raise self.model.DoesNotExist("%s matching query does not exist."
--> 349 % self.model._meta.object_name)
350 raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s"
351 % (self.model._meta.object_name, num, kwargs))
DoesNotExist: Example matching query does not exist.
I considered sending in a patch to throw lines 238-240 in a try/except block, but I'm not sure that's the best way to solve this issue. I will submit something if a suggestion is made (I'm not super familiar with the Django codebase, so I might need some hand-holding).
Change History (2)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
I have been bitten by this seemingly strange behavior myself in the past, and there is an open ticket for this:
Ticket #3106 and #10227 refers to the same problem. See those tickets for discussions on why it has not been fixed yet.
I am closing this ticket as duplicate, please reopen it and explain why if I am missing something that has not been brought to attention in the other ticket!
Maybe an error should be thrown when a related_name is set on a OneToOneField...