Rumah > Artikel > pembangunan bahagian belakang > Apakah perbezaan utama antara `OneToOneField()` dan `ForeignKey()` dengan `unique=True` dalam Django?
OneToOneField() dan ForeignKey() ialah dua medan model Django yang digunakan untuk mewujudkan hubungan antara model. Walaupun kedua-dua medan boleh mencipta hubungan satu dengan satu, terdapat perbezaan yang ketara dalam tingkah laku mereka:
Pertimbangkan model berikut:
# 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)
Dalam cangkerang 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>]
Hubungan "terbalik" OneToOneField (engine.car) mengembalikan objek tunggal (contoh Kereta), manakala ForeignKey dengan hubungan "terbalik" unik=True (engine2.car2_set.all()) mengembalikan Set Query (senarai semua kejadian Car2 yang berkaitan dengan contoh Enjin2 itu).
Atas ialah kandungan terperinci Apakah perbezaan utama antara `OneToOneField()` dan `ForeignKey()` dengan `unique=True` dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!