Django与用户的onetoone关系无法使用查询

时间:2019-01-26 14:08:03

标签: python django python-3.x django-models django-rest-framework

我的模特就是这样

class Profile(models.Model):
    user = models.OneToOneField(User,default=None,null=True,on_delete=models.CASCADE)
    name = models.CharField(max_length=50,null=True)

我试图使用shell遍历模型,但得到空查询。 我尝试过了

>>> u1=User.objects.get(username='gautam')
>>>u1
<User: gautam> 
>>> Profile.objects.get(user=u1)
Traceback (most recent call last):
File "/usr/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "/home/gautam/.local/lib/python3.6/site- 
packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/gautam/.local/lib/python3.6/site- 
packages/django/db/models/query.py", line 399, in get
self.model._meta.object_name
homes_login.models.DoesNotExist: Profile matching query does not 
exist.

我正努力吸引该个人资料的用户。

1 个答案:

答案 0 :(得分:0)

该配置文件只是未创建。设置OneToOne关系并不能保证每个用户都存在配置文件。为了克服这个问题,您只需创建新的配置文件,就像这样:

>>> Profile.objects.create(user=u1)

要自动执行获取现有配置文件或创建新配置文件的过程,可以使用get_or_create方法。