我的模特就是这样
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.
我正努力吸引该个人资料的用户。
答案 0 :(得分:0)
该配置文件只是未创建。设置OneToOne
关系并不能保证每个用户都存在配置文件。为了克服这个问题,您只需创建新的配置文件,就像这样:
>>> Profile.objects.create(user=u1)
要自动执行获取现有配置文件或创建新配置文件的过程,可以使用get_or_create
方法。