Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以使用OneToOneField的反向关系吗_Python_Django - Fatal编程技术网

Python 我可以使用OneToOneField的反向关系吗

Python 我可以使用OneToOneField的反向关系吗,python,django,Python,Django,我可以做以下代码吗 class EmailActivaion(models.Model): user = models.OneToOneField(User,on_delete=models.CASCADE) 因为我得到了以下错误: qs=User.objects.filter(email='bla@bla.com') obj=qs.first() em = obj.EmailActivaion_set.all() 由于您使用的是OneToOneField,这意味着目标模型(此处为U

我可以做以下代码吗

class EmailActivaion(models.Model):
user =     models.OneToOneField(User,on_delete=models.CASCADE)
因为我得到了以下错误:

qs=User.objects.filter(email='bla@bla.com')
obj=qs.first()
em = obj.EmailActivaion_set.all()

由于您使用的是
OneToOneField
,这意味着目标模型(此处为
User
)最多有一个
EmailActivation
对象附加到它

因此,反向关系不是
somemodel\u set
,而是简单的
somemodel

所以你应该写:

AttributeError: 'User' object has no attribute 'EmailActivaion_set'
#获取单个EmailActivation实例,
#或引发EmailActivation.DoesNotExist错误(如果不存在)
em=目标电子邮件激活
这将直接获取与
User
实例
obj
相关的对象

注意:可能没有任何
电子邮件激活
实例与此
用户
相关联,在这种情况下,它将引发
电子邮件激活。DoesNotExist
错误,因此您可能希望编写
try
-
,除了与此相关的
逻辑

注意我修复了一个拼写错误:它是
EmailActivation
(带有两个
t
s)

注意:关系的名称是模型的名称,小写,因此不是
obj.EmailActivation
,而是
obj.EmailActivation

注意:通常最好参考
设置。验证用户模型
而不是直接向
用户
模型:如果以后将用户模型更改为自定义模型,则不必重写所有这些模型。默认情况下,
settings.AUTH\u USER\u MODEL
USER
,但您可以稍后将其设置为其他模型


非常感谢威廉的快速和全面的回复
# fetches the single EmailActivation instance,
# or raises an EmailActivation.DoesNotExist error (in case no exists)
em = obj.emailactivation