diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2013-03-24 20:57:02 +0200 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2013-03-24 20:59:56 +0200 |
| commit | 0e0eb8a9553bb89347ceb159537ccc417cb5e7f5 (patch) | |
| tree | 0b49220bda878a3bf3d5db26d9fd26ab008a2400 | |
| parent | 014638a1311dfc64e6f6eed28f12eeb227926150 (diff) | |
Fixed field.rel.field_name handling
This is a regression fix to multicolumn joins. Refs #19385.
| -rw-r--r-- | django/db/models/fields/related.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 5b2f35bb08..b575583ebc 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -126,6 +126,7 @@ class RelatedField(Field): self.name = self.name or (self.rel.to._meta.model_name + '_' + self.rel.to._meta.pk.name) if self.verbose_name is None: self.verbose_name = self.rel.to._meta.verbose_name + self.rel.set_field_name() def do_related_class(self, other, cls): self.set_attributes_from_rel() @@ -863,6 +864,16 @@ class ForeignObjectRel(object): def get_extra_restriction(self, where_class, alias, related_alias): return self.field.get_extra_restriction(where_class, related_alias, alias) + def set_field_name(self): + """ + Sets the related field's name, this is not available until later stages + of app loading, so set_field_name is called from + set_attributes_from_rel() + """ + # By default foreign object doesn't relate to any remote field (for + # example custom multicolumn joins currently have no remote field). + self.field_name = None + class ManyToOneRel(ForeignObjectRel): def __init__(self, field, to, field_name, related_name=None, limit_choices_to=None, parent_link=False, on_delete=None): @@ -882,6 +893,9 @@ class ManyToOneRel(ForeignObjectRel): self.field_name) return data[0] + def set_field_name(self): + self.field_name = self.field_name or self.to._meta.pk.name + class OneToOneRel(ManyToOneRel): def __init__(self, field, to, field_name, related_name=None, limit_choices_to=None, |
