Python中的前向类声明

5 投票
1 回答
2526 浏览
提问于 2025-04-16 13:43

我有两个类,顺序如下:

class A(models):
    ...

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

现在我需要把我的模型改成下面这个样子:

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

class B(models):
    ...

我需要使用south迁移。我想在类A中创建一个新的多对多字段,然后迁移数据,并从类B中删除这个字段。问题是这两个类在同一个模型里。所以当我把多对多字段放到类A中时,它无法被识别,因为类B的声明在类A下面。该怎么解决这个问题呢?

1 个回答

9

至少SQLAlchemy让你可以用字符串代替类。你可以试试看django-orm是否也支持这样做。

a = models.ManyToManyField('A')
# ...
b = models.ManyToManyField('B')

更新:根据Django/Python循环模型引用的内容,这确实是正确的做法。

撰写回答