diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py
index 8da0d7e..af2da45 100644
a
|
b
|
class Command(NoArgsCommand):
|
41 | 41 | yield '' |
42 | 42 | yield 'from %s import models' % self.db_module |
43 | 43 | yield '' |
| 44 | known_models = [] |
44 | 45 | for table_name in connection.introspection.get_table_list(cursor): |
45 | 46 | yield 'class %s(models.Model):' % table2model(table_name) |
| 47 | known_models.append(table2model(table_name)) |
46 | 48 | try: |
47 | 49 | relations = connection.introspection.get_relations(cursor, table_name) |
48 | 50 | except NotImplementedError: |
… |
… |
class Command(NoArgsCommand):
|
83 | 85 | |
84 | 86 | if i in relations: |
85 | 87 | rel_to = relations[i][1] == table_name and "'self'" or table2model(relations[i][1]) |
86 | | field_type = 'ForeignKey(%s' % rel_to |
| 88 | |
| 89 | if rel_to in known_models: |
| 90 | field_type = 'ForeignKey(%s' % rel_to |
| 91 | else: |
| 92 | field_type = "ForeignKey('%s'" % rel_to |
| 93 | |
87 | 94 | if att_name.endswith('_id'): |
88 | 95 | att_name = att_name[:-3] |
89 | 96 | else: |
diff --git a/tests/regressiontests/inspectdb/tests.py b/tests/regressiontests/inspectdb/tests.py
index 944eb64..6896bf9 100644
a
|
b
|
class InspectDBTestCase(TestCase):
|
12 | 12 | call_command('inspectdb', stdout=out) |
13 | 13 | error_message = "inspectdb generated an attribute name which is a python keyword" |
14 | 14 | self.assertNotIn("from = models.ForeignKey(InspectdbPeople)", out.getvalue(), msg=error_message) |
15 | | self.assertIn("from_field = models.ForeignKey(InspectdbPeople)", out.getvalue()) |
| 15 | # As InspectdbPeople model is defined after InspectdbMessage, it should be quoted |
| 16 | self.assertIn("from_field = models.ForeignKey('InspectdbPeople')", out.getvalue()) |
16 | 17 | self.assertIn("people_pk = models.ForeignKey(InspectdbPeople, primary_key=True)", |
17 | 18 | out.getvalue()) |
18 | 19 | self.assertIn("people_unique = models.ForeignKey(InspectdbPeople, unique=True)", |