2011-11-14 5 views
2

こんにちは私はモデルが大きくなっているので私のファイルを分割しています。だからここで再び問題がある:Python + Djangoで循環インポートしますか?どのように動作させるには?

私のモデル; 私のカテゴリモデルで「ArticleToCategory」と多対多の関係を削除した場合、それはうまく機能します。しかし、私はそれらが必要です!

修正方法?

model.pyからファイルをロードするためにmodel.pyを削除しました。

カテゴリー(models.category):

class Category(MPTTModel): 
    # relationships 
    from RubeteDjango01.generic.models.article import Article 
    from RubeteDjango01.generic.models.article_to_category import ArticleToCategory 
    articles = m.ManyToManyField(Article, through=ArticleToCategory) 

ArticleToCategory(models.article_to_category):

from django.db import models as m 

class ArticleToCategory(m.Model): 
    from RubeteDjango01.generic.models.article import Article 
    from RubeteDjango01.generic.models.category import Category 

    article = m.ForeignKey(Article) 
    category = m.ForeignKey(Category) 

    class Meta: 
     db_table = 'articles_to_categories' 
     verbose_name_plural = 'ArticlesToCategories' 

おかげ

答えて

7

あなたは、まさにこの問題を回避するために、文字列を使用して外部キーを定義することができます。

class Art2C(..): 
    art = m.ForeignKey('Article') 
    from_other_app = m.ForeignKey('other_app.Article') 
+0

ありがとう!私はドット表記でモジュールの絶対パスを入れようとしていましたが、うまく機能しませんでした。もう一度ありがとうございます;)あなたは私に多くの時間を節約しました;)ps:別のアプリからモデルをインポートする方法も示しました。それは本当に知っていることは素晴らしいです。 :D –

+0

私はあなたに別のものを尋ねなければなりません:この表記法を使う他の場所はどこですか? post_save ...とこのようなこと。 –

+2

他のほとんどの場所では、インポートステートメントを関数呼び出しに移動して、循環インポートの問題を避けることができます – second

関連する問題