Python中的前向类声明

sza*_*man 5 python django django-models django-south

我按顺序有两个班:

class A(models):
    ...

class B(models):
    a = models.ManyToManyField(A)
Run Code Online (Sandbox Code Playgroud)

现在我必须将我的模型改为以下一个:

class A(models):
    b = models.ManyToManyField(B)

class B(models):
    ...
Run Code Online (Sandbox Code Playgroud)

我必须使用南迁移.我想在A类中创建新的多对多字段,从B类迁移数据和删除字段.问题是两者都在同一个模型中.因此,当我将多对多的东西放入A类时,它是无法看到的.因为B声明低于A.如何解决这个问题?

Thi*_*ter 9

至少SQLAlchemy允许您使用字符串而不是类.尝试django-orm也允许这样做.

a = models.ManyToManyField('A')
# ...
b = models.ManyToManyField('B')
Run Code Online (Sandbox Code Playgroud)

更新:根据Django/Python循环模型参考,这正是要走的路.