Python Django onetoone与不使用查询的用户的关系
我的模型是这样的Python Django onetoone与不使用查询的用户的关系,python,django,python-3.x,django-models,django-rest-framework,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
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.
u1=User.objects.get(username='gautam')
>>>u1
>>>Profile.objects.get(用户=u1)
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3.6/code.py”,第91行,运行代码
exec(代码,self.locals)
文件“”,第1行,在
文件“/home/gautam/.local/lib/python3.6/site-
packages/django/db/models/manager.py”,第82行,在manager\u方法中
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“/home/gautam/.local/lib/python3.6/site-
packages/django/db/models/query.py”,get中第399行
self.model.\u meta.object\u name
homes\u login.models.DoesNotExist:配置文件匹配查询不存在
存在。
我正在尝试获取该配置文件的用户。此配置文件不是创建的。设置
OneToOne
关系并不能保证每个用户都有配置文件。要克服这一点,您只需创建新的概要文件,如下所示:
>>> Profile.objects.create(user=u1)
要自动化获取现有配置文件或创建新配置文件的过程,可以使用
get\u或\u create
方法。这可能会发生。请注意,OneToOneField
事实上并不意味着每个用户都有一个配置文件
,它意味着您构造了一个外键
,具有unique=True
约束,这样两个Profile
s就不能指向同一个User
。嘿,非常感谢你的帮助谢谢@gwynbleid你真的解决了我的问题吗