1. ホーム
  2. django

[解決済み] Django - 円形モデルのインポートの問題

2022-02-11 19:22:25

質問

私は本当にこれを理解していないので、誰かがこれがどのように動作するかを説明することができれば、私は非常に感謝します。 私は、アカウントとテーマの2つのアプリケーションを持っている...ここに私の設定リストがあります。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'accounts',
    'themes',
)

アカウントでは、このように心がけています。

from themes.models import Theme

class Account(models.Model):
    ACTIVE_STATUS = 1
    DEACTIVE_STATUS = 2
    ARCHIVE_STATUS = 3
    STATUS_CHOICES = (
        (ACTIVE_STATUS, ('Active')),
        (DEACTIVE_STATUS, ('Deactive')),
        (ARCHIVE_STATUS, ('Archived')),
    )

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    status = models.IntegerField(choices=STATUS_CHOICES, default=ACTIVE_STATUS, max_length=1)
    owner = models.ForeignKey(User)
    enable_comments = models.BooleanField(default=True)
    theme = models.ForeignKey(Theme)
    date_created = models.DateTimeField(default=datetime.now)

そして、私のテーマモデルで。

class Theme(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    date_created = models.DateTimeField(default=datetime.now)

class Stylesheet(models.Model):
    id = models.AutoField(primary_key=True)
    account = models.ForeignKey(Account)
    date_created = models.DateTimeField(default=datetime.now)
    content = models.TextField()

Djangoは以下のようなエラーを蹴飛ばしています。

from themes.models import Theme
ImportError: cannot import name Theme

これは何らかの循環的なインポートの問題なのでしょうか?遅延参照を使ってみましたが、これもうまくいかないようです。

解決方法は?

のインポートを削除します。 Theme を使用し、代わりにモデル名を文字列として使用します。

theme = models.ForeignKey('themes.Theme')