OneToOneField() et ForeignKey() sont deux champs de modèle Django utilisés pour établir des relations entre les modèles. Bien que les deux champs puissent créer une relation individuelle, il existe des différences subtiles dans leur comportement :
Considérons les modèles suivants :
# 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)
Dans le shell 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>]
La relation "inverse" de OneToOneField (engine.car) renvoie un seul objet (l'instance Car), tandis que ForeignKey avec unique=La relation "inverse" de True (engine2.car2_set.all()) renvoie un QuerySet (une liste de toutes les instances Car2 liées à cette instance Engine2).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!