0

クラスFolderは、Folderへの外部キーを持つクラスItemを継承します。

class Item(models.Model):
    # some fields
    folder = models.ForeignKey('Folder')

class Folder(Item):
    # some fields

これを実行しようとすると、次のエラーが発生します。

app.item: 'folder' has a relation with model Folder, which has either not been installed or is abstract

ここで正しいことは、モデル名を引用符で囲むことだと思いましたが、それは役に立たないようです。これを機能させるにはどうすればよいですか?

編集:意味のあるクラス名を使用して質問を明確化

4

1 に答える 1

1

アイテム(A)があり、そのうちのいくつかはフォルダー(B)です。両方のクラスに最大で1つのフォルダーへの参照を持たせたい

あなたがやろうとしていることは(私には)あまり意味がありませんが、これは次のように達成できます:

class Item(models.Model):
    # some fields
    is_folder = models.BooleanField(default=False)
    some_other_folder = models.ForeignKey('self', null=True, blank=True)

そして、Pythonコードで、もしそうならis_folder==False、それsome_other_folder がNone(null)ではないことを確認します。

したがって、実際には2つのモデルは必要ありません。

于 2012-11-15T18:40:37.723 に答える