OneToOneField() und ForeignKey() sind zwei Django-Modellfelder, die zum Herstellen von Beziehungen zwischen Modellen verwendet werden. Während beide Felder eine Eins-zu-eins-Beziehung herstellen können, gibt es subtile Unterschiede in ihrem Verhalten:
Betrachten Sie die folgenden Modelle:
# 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)
In der Python-Shell:
# 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>]
Die „umgekehrte“ Beziehung von OneToOneField (engine.car) gibt ein einzelnes Objekt (die Car-Instanz) zurück, während der ForeignKey mit Die „umgekehrte“ Beziehung von unique=True (engine2.car2_set.all()) gibt ein QuerySet zurück (eine Liste aller Car2-Instanzen, die mit dieser Engine2-Instanz verknüpft sind).
Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen „OneToOneField()' und „ForeignKey()' mit „unique=True' in Django?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!