In the documentation on the django website it states "In particular, you’ll need to rearrange models’ order, so that models that refer to other models are ordered properly."
What exactly does this mean?
В Python в целом, чтобы обратиться к любому имени, его необходимо определить в первую очередь; потому что только тогда он отображается; так что это приведет к ошибке:
print(hello)
hello = 'world'
Аналогично, в models.py
, когда вы ссылаетесь на другую модель класса в любых отношениях; вы должны убедиться, что класс объявлен до его упоминания, или вам нужно указать имя класса. Поскольку проверка не может гарантировать порядок создаваемых моделей, вы получаете предупреждение. Он предназначен для предотвращения такого сценария, который приведет к ошибке:
class A(models.Model):
foo = models.ForeignKey(B)
class B(models.Model):
name = models.CharField(max_length=200)
Чтобы исправить это, вы можете объявить B
до того A
:
class B(models.Model):
name = models.CharField(max_length=200)
class A(models.Model):
foo = models.ForeignKey(B)
Или использовать строку вместо имени:
class A(models.Model):
foo = models.ForeignKey('B')
class B(models.Model):
name = models.CharField(max_length=200)
Вы можете указать ссылку на документацию, на которую указываете? – jsalonen