      description = _("Foreign Key (type determined by related field)")
  
      def __init__(self, to, to_field=None, rel_class=ManyToOneRel, **kwargs):
          try:
              to_name = to._meta.object_name.lower()
          except AttributeError:  # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
              assert isinstance(to, six.string_types), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
          else:
              assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
              # For backwards compatibility purposes, we need to *try* and set
 
</s> remove         return self.rel.related_name or self.opts.object_name.lower()
 </s> add         return self.rel.related_name or self.opts.model_name </s> remove     Helper to look up a model from an "app_label.module_name" string.
 </s> add     Helper to look up a model from an "app_label.model_name" string. </s> remove             model_name = model._meta.object_name.lower()
 </s> add             model_name = model._meta.model_name </s> remove             model_label = '%s.%s' % (self.app_label, self.object_name.lower())
 </s> add             model_label = '%s.%s' % (self.app_label, self.model_name) </s> remove         return self.user.has_perm("%s.%s" % (self.module_name, perm_name))
 </s> add         return self.user.has_perm("%s.%s" % (self.app_label, perm_name))
            to_name = to._meta.model_name
      description = _("Foreign Key (type determined by related field)")
  
      def __init__(self, to, to_field=None, rel_class=ManyToOneRel, **kwargs):
          try:
            to_name = to._meta.model_name
          except AttributeError:  # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
              assert isinstance(to, six.string_types), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
          else:
              assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
              # For backwards compatibility purposes, we need to *try* and set
keep keep keep keep replace keep keep keep keep keep
 Fixed #19689 -- Renamed `Model._meta.module_name` to `model_name`. 
django/db/models/fields/related.py