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:
|
||||
val = f.get_default()
|
||||
else:
|
||||
# Object instance was passed in.
|
||||
# Special case: You can pass in "None" for related objects if it's allowed.
|
||||
if rel_obj is None and f.null:
|
||||
val = None
|
||||
else:
|
||||
try:
|
||||
val = getattr(rel_obj, f.rel.field_name)
|
||||
val = getattr(rel_obj, f.rel.get_related_field().attname)
|
||||
except AttributeError:
|
||||
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)
|
||||
|
@ -892,7 +893,12 @@ def method_get_many_to_one(field_with_rel, self):
|
|||
mod = field_with_rel.rel.to.get_model_module()
|
||||
if val is None:
|
||||
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)
|
||||
return getattr(self, cache_var)
|
||||
|
||||
|
|
Loading…
Reference in New Issue