OneToOneField() とForeignKey() は、モデル間の関係を確立するために使用される 2 つの Django モデル フィールドです。どちらのフィールドも 1 対 1 の関係を作成できますが、その動作には微妙な違いがあります。
次のモデルを考えてみましょう:
# OneToOneField example class Car(models.Model): name = models.CharField(max_length=25) engine = models.OneToOneField(Engine) # ForeignKey with unique=True example class Car2(models.Model): name = models.CharField(max_length=25) engine = models.ForeignKey(Engine2, unique=True)
Python シェル:
# OneToOneField car = Car.objects.get(name='Audi') engine = Engine.objects.get(name='Diesel') print(engine.car) # Outputs <Car: Audi> # ForeignKey with unique=True car2 = Car2.objects.get(name='Mazda') engine2 = Engine2.objects.get(name='Wankel') print(engine2.car2_set.all()) # Outputs [<Car2: Mazda>]
OneToOneField の「逆」関係 (engine.car) は 1 つのオブジェクト (Car インスタンス) を返しますが、unique=True のForeignKey の「逆」関係 (engine2.car2_set.all()) は QuerySet を返します。 (その Engine2 インスタンスに関連するすべての Car2 インスタンスのリスト)。
以上がDjango の `OneToOneField()` と `unique=True` を使用した `ForeignKey()` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。