﻿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
10227	Support a related_default on OneToOne fields	rvdrijst	nobody	"EDIT: scroll to comment 13 to see what this ticket is about.


Referencing a {{{OneToOneField}}} with {{{null=True}}} (i.e. it's optional) when there is no value set will return {{{None}}}, as expected.
However, referencing the reverse side of the relation does not follow this behavior and raises a {{{DoesNotExist}}} exception. 

For example, in the following situation where {{{Shop}}}s have optionally a {{{Place}}} (e.g. webshops need not have a physical location):
{{{
class Place(models.Model)
    address = models.CharField(max_length=80)
class Shop(models.Model)
    place = models.OneToOneField(Place, null=True)
    name = models.CharField(max_length=50)
    website = models.URLField()
}}}
This ''does'' work as expected:
{{{
>>> s1 = Shop.objects.create(name='Shop', website='shop.com')
>>> print s1.place
None
}}}
But this ''doesn't'' work as expected:
{{{
>>> p1 = Place.objects.create(address='123 somestr')
>>> p1.shop
... [exception stack trace] ...
DoesNotExist: Shop matching query does not exist.
}}}
I would expect this to be {{{None}}} when {{{null}}} is allowed on the {{{OneToOneField}}}.

Please correct my if I'm wrong.

I have attached a patch to fix this (checking if {{{null}}} is allowed and returning {{{None}}} or raising the exception appropriately), including tests.

Unfortunately this is slightly backwards incompatible, since someone may currently rely on the exception being thrown."	New feature	new	Database layer (models, ORM)	dev	Normal		onetoone related expection null	rvdrijst eallik@… olau@… django@… Sebastian Goll Aymeric Augustin cvrebert Francis Devereux mike@… Ryan Hiebert Peter Thomassen Roman Donchenko	Accepted	0	0	0	0	0	0
