/ /たくさんのリレーションを持つモデルクラスを書く方法は? - django、django-models

多くの関係を持つモデルクラスを書くには? - django、django-models

私はクラスを持っている人:

class Person(models.Model):
name = ...
[etc]
client = models.BooleanField(default=True)
image = models.ForeignKey(ImageData, null=True)

このクラスには、売り手。 私はクラスImageを持っています。このモデルには、顧客画像のデータと売り手の画像のデータが含まれています。売り手が画像フィールドの作成者を作成するときに、この売り手との関係が必要です。

class ImageData(models.Model):
creator = models.ForeignKey(Person)
[etc]

このクラス定義は1つのファイルmodels.pyにあります。 ImageDataクラスが最初にmanage.pyと言うとき:

NameError: name "Person" is not defined

Personクラスが最初のとき:

NameError: name "ImageData" is not defined

これを解決するには?

回答:

回答№1の場合は3

モデルがまだ定義されていない場合は、文字列として名前を付けることができますので、この種のエラーは発生しません。

image = models.ForeignKey("ImageData", null=True)

すなわち、引用符 ImageData.

ここのドキュメントから ForiegnKey

まだ定義されていないモデルでリレーションシップを作成する必要がある場合は、モデルオブジェクト自体ではなく、モデルの名前を使用できます。

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

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