mirror of
https://github.com/django/django.git
synced 2024-12-25 10:35:48 +00:00
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1313 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
887ed3ad2c
commit
6f249c856b
@ -754,12 +754,13 @@ def method_init(opts, self, *args, **kwargs):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
val = f.get_default()
|
val = f.get_default()
|
||||||
else:
|
else:
|
||||||
|
# Object instance was passed in.
|
||||||
# Special case: You can pass in "None" for related objects if it's allowed.
|
# Special case: You can pass in "None" for related objects if it's allowed.
|
||||||
if rel_obj is None and f.null:
|
if rel_obj is None and f.null:
|
||||||
val = None
|
val = None
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
val = getattr(rel_obj, f.rel.field_name)
|
val = getattr(rel_obj, f.rel.get_related_field().attname)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
raise TypeError, "Invalid value: %r should be a %s instance, not a %s" % (f.name, f.rel.to, type(rel_obj))
|
raise TypeError, "Invalid value: %r should be a %s instance, not a %s" % (f.name, f.rel.to, type(rel_obj))
|
||||||
setattr(self, f.attname, val)
|
setattr(self, f.attname, val)
|
||||||
@ -892,7 +893,12 @@ def method_get_many_to_one(field_with_rel, self):
|
|||||||
mod = field_with_rel.rel.to.get_model_module()
|
mod = field_with_rel.rel.to.get_model_module()
|
||||||
if val is None:
|
if val is None:
|
||||||
raise getattr(mod, '%sDoesNotExist' % field_with_rel.rel.to.object_name)
|
raise getattr(mod, '%sDoesNotExist' % field_with_rel.rel.to.object_name)
|
||||||
retrieved_obj = mod.get_object(**{'%s__exact' % field_with_rel.rel.field_name: val})
|
other_field = field_with_rel.rel.get_related_field()
|
||||||
|
if other_field.rel:
|
||||||
|
params = {'%s__%s__exact' % (field_with_rel.rel.field_name, other_field.rel.field_name): val}
|
||||||
|
else:
|
||||||
|
params = {'%s__exact'% field_with_rel.rel.field_name: val}
|
||||||
|
retrieved_obj = mod.get_object(**params)
|
||||||
setattr(self, cache_var, retrieved_obj)
|
setattr(self, cache_var, retrieved_obj)
|
||||||
return getattr(self, cache_var)
|
return getattr(self, cache_var)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user