OneToOneField() 和ForeignKey() 是用于建立模型之间关系的两个Django 模型字段。虽然这两个字段都可以创建一对一关系,但它们的行为存在细微差别:
考虑以下模型:
# 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 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>]
OneToOneField 的“反向”关系(engine.car) 返回单个对象(Car 实例),而具有 unique=True 的“反向”关系的foreignKey (engine2.car2_set.all()) 返回一个 QuerySet(与该 Engine2 实例相关的所有 Car2 实例的列表) ).
以上是Django 中 `OneToOneField()` 和 `ForeignKey()` 与 `unique=True` 之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!