2011-03-15 87 views
5

我爲了兩類:正向類的聲明在Python

class A(models): 
    ... 

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

現在我有我的模式改變爲以下之一:

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

class B(models): 
    ... 

我必須使用南方遷移。我希望在A類中創建多個到多個領域,從B類遷移數據並刪除字段。問題是兩者都處於相同模型中。所以當我把很多很多的東西放到A課程中時,它是不可見的。因爲B聲明低於A.如何解決這個問題?

+0

[Django模型:兩個類之間的相互引用和不可能在Python中使用前向聲明]可能的副本(http://stackoverflow.com/questions/7298326/django-models-mutual-references-between-two-class -and-impossible-to-use-fo) – 2016-05-22 20:20:05

回答

9

至少SQLAlchemy允許您使用字符串而不是類。試試如果django-orm也允許的話。

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

更新:根據Django/Python Circular model reference這正是要走的路。

+0

我希望它能工作:) – szaman 2011-03-15 08:18:55

+0

(另外,在SQLAlchemy中,使用字符串代替類只能與DeclarativeBase一起使用。如果直接使用mapper,則不能使用該技術,但你也不需要它) – SingleNegationElimination 2011-03-15 08:25:56

+0

它的工作原理 - 簡單的解決方案是最好的:)非常感謝 – szaman 2011-03-15 10:03:06