gpt4 book ai didi

django - ForeignKey(User, unique=True) 和 OneToOneField 之间的区别

转载 作者:行者123 更新时间:2023-12-03 11:34:10 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What's the difference between django OneToOneField and ForeignKey?

(11 个回答)


8年前关闭。



models.ForeignKey(Modelname, unique=True) 之间有什么不同?和 models.OneToOneField在 Django ?

我应该在哪里使用 models.OneToOneFieldmodels.ForeignKey(Modelname, unique=True) ?

最佳答案

一个 OneToOneFieldForeignKey 非常相似与 unique=True .除非你正在做多表继承,在这种情况下你必须使用 OneToOneField ,唯一真正的区别是访问相关对象的api。

Django docs它说:

Conceptually, this is similar to a ForeignKey with unique=True, but the "reverse" side of the relation will directly return a single object.



让我们用一个例子来说明这意味着什么。考虑两个模型, PersonAddress .我们假设每个人都有一个唯一的地址。
class Person(models.Model):
name = models.CharField(max_length=50)
address = models.ForeignKey('Address', unique=True)

class Address(models.Model):
street = models.CharField(max_length=50)

如果你从一个人开始,你可以很容易地访问地址:
address = person.address

但是,如果您从地址开始,则必须通过 person_set经理来接人。
person = address.person_set.get() # may raise Person.DoesNotExist

现在让我们替换 ForeignKeyOneToOneField .
class Person(models.Model):
name = models.CharField(max_length=50)
address = models.OneToOneField('Address')

class Address(models.Model):
street = models.CharField(max_length=50)

如果从一个人开始,您可以通过相同的方式访问该地址:
address = person.address

现在,我们可以更轻松地从该地址访问该人。
person = address.person # may raise Person.DoesNotExist

关于django - ForeignKey(User, unique=True) 和 OneToOneField 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9949077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com