7

モデル A には B への外部キー参照があり、B には A への多対多参照があるなど、Django モデルに循環依存関係があります。他の SO 投稿を参照し、代わりに文字列モデル名を使用しました。実際のクラスの、しかし役に立たない。以下は、私の 2 つのクラスの短縮版です。

ユーザーモデル

import listings.models

class User(models.Model):
    ...
    favorites = models.ManyToManyField('listings.models.Listing')

出品モデル

import users.models

class Listing(models.Model):
    ...
    owner = models.ForeignKey('users.models.User')

syncdbを実行しようとするたびに、次のエラーが出力されます。

エラー: 1 つまたは複数のモデルが検証されませんでした: users.user: 'favorites' は、インストールされていないか抽象的であるモデル Listings.models.Listing との m2m 関係を持っています。Listings.listing: 'owner' はモデル users.models.User と関係がありますが、これはインストールされていないか抽象的です。

確立された関係を犠牲にすることなくこれを解決するにはどうすればよいですか?

4

2 に答える 2

9
  • 'listings.models.Listing' should be 'listings.Listing'
  • 'users.models.User' should be 'users.User' (or 'auth.User' if you were to use django.contrib.auth.models.User)

Refer to official documentation for more.

于 2012-11-25T18:49:56.343 に答える
0

コードに依存していないため、インポートを削除できます。モデル名に文字列のみを使用します-依存関係ではありません。またmodels、モデルを次のように参照できるため、文字列から -を削除する必要があります。app_name.model_name

于 2012-11-25T18:57:28.987 に答える