Ticket #3323: patch-foreignkey-attributeerror.diff

File patch-foreignkey-attributeerror.diff, 2.9 KB (added by Gregor_Kopka, 7 years ago)

Patch updated: fixed the error message to display the correct name of missing model

  • django/db/models/options.py

     
    152152            rel_objs = []
    153153            for klass in get_models():
    154154                for f in klass._meta.fields:
    155                     if f.rel and self == f.rel.to._meta:
     155                    if f.rel and not isinstance(f.rel.to, str) and self == f.rel.to._meta:
    156156                        rel_objs.append(RelatedObject(f.rel.to, klass, f))
    157157            self._all_related_objects = rel_objs
    158158            return rel_objs
     
    186186            rel_objs = []
    187187            for klass in get_models():
    188188                for f in klass._meta.many_to_many:
    189                     if f.rel and self == f.rel.to._meta:
     189                    if f.rel and not isinstance(f.rel.to, str) and self == f.rel.to._meta:
    190190                        rel_objs.append(RelatedObject(f.rel.to, klass, f))
    191191            if app_cache_ready():
    192192                self._all_related_many_to_many_objects = rel_objs
  • django/core/management/validation.py

     
    7070            # Check to see if the related field will clash with any
    7171            # existing fields, m2m fields, m2m related objects or related objects
    7272            if f.rel:
    73                 rel_opts = f.rel.to._meta
    7473                if f.rel.to not in models.get_models():
    75                     e.add(opts, "'%s' has relation with model %s, which has not been installed" % (f.name, rel_opts.object_name))
     74                    e.add(opts, "'%s' has relation with model %s, which has not been installed" % (f.name, f.rel.to))
     75                    continue
    7676
     77                rel_opts = f.rel.to._meta
    7778                rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
    7879                rel_query_name = f.related_query_name()
    7980                for r in rel_opts.fields:
     
    101102        for i, f in enumerate(opts.many_to_many):
    102103            # Check to see if the related m2m field will clash with any
    103104            # existing fields, m2m fields, m2m related objects or related objects
    104             rel_opts = f.rel.to._meta
    105105            if f.rel.to not in models.get_models():
    106                 e.add(opts, "'%s' has m2m relation with model %s, which has not been installed" % (f.name, rel_opts.object_name))
     106                e.add(opts, "'%s' has m2m relation with model %s, which has not been installed" % (f.name, f.rel.to))
     107                continue
    107108
     109            rel_opts = f.rel.to._meta
    108110            rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
    109111            rel_query_name = f.related_query_name()
    110112            # If rel_name is none, there is no reverse accessor.
Back to Top