2011-09-04 16 views
14

で宣言を前方に使用するには、2つのクラスと不可能間の相互参照を、私はそうのように、それぞれ一方が他方を参照する二つのモデルを定義している:あなたが見Djangoのモデル:パイソン

class User(models.Model): 
    # ... 
    loves = models.ManyToManyField(Article, related_name='loved_by') 

class Article(models.Model): 
    # ... 
    author = models.ForeignKey(User) 

、問題は両方のクラスの参照でありますお互い。これらの2つのクラスがどのような順序で実装されていても、いずれのクラスも定義されていないと言うと、Pythonは常にNameError例外を発生させます。

答えて

31

あなたはdocsで解決策を見つけることができます。

あなたはまだ定義されていないモデル上の関係を作成する必要がある場合は、モデルの名前ではなく、モデルオブジェクトを使用することができますそれ自体:

class Car(models.Model): 
    manufacturer = models.ForeignKey('Manufacturer') 
    # ... 

class Manufacturer(models.Model): 
    # ...