python - python django的get()和filter()的区别?filter() 在获取数据时是否不考虑关联表?
问题描述
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_img = models.ImageField(upload_to='ProfileImg', default='ProfileImg/default-avatar.png')
feedback = models.CharField(max_length=100, null = True)
views.py
使用 objects.get() 时
user = User.objects.get(id=request.user.id)
user.userprofile.feedback = sentiment_Value
user.save()
它工作正常。
但是在使用 objects.filter()
user = User.objects.filter(id=request.user.id)
user.userprofile.feedback = sentiment_Value
user.save()
我收到错误
user.userprofile.feedback = sentiment_Value
AttributeError: 'QuerySet' object has no attribute 'userprofile'
和user
回报
user: <QuerySet [<User: snegi8005>]>
我不知道为什么会这样。我认为 get() 和 filter() 函数的工作方式相同,唯一的区别是 get() 如果未找到任何内容则会引发异常,如果未找到匹配项,则 filter() 会返回 none。
get() 和 filter() 是如何工作的?
如果我错了,请纠正我并帮助我解决这个问题。
我还想获取 user.id 的用户数据和关联的表userprofile
数据。如果找不到数据,它应该返回 none 或不应该引发异常。我知道我可以将 get() 与 try/except 块一起使用,但这对我来说代码太多了。
解决方案
推荐阅读
- python - Pyqt5中的Qthreading
- uno-platform - Uno主布局
- docker - 从 kubernetes pod 提交 pyspark 应用程序
- amazon-web-services - 从 s3 存储桶下载文件时如何触发 lambda 函数?
- reactjs - Highstocks 带有单个导航器的多个图表 + 导航器外部的标签 + 自定义导航器句柄符号
- javascript - Socket.io 404 错误 - 客户端未连接
- javascript - 使用 Netlify 在 Gatsby 网站上进行 prerenderReady
- android - 即使应用程序崩溃也显示 AlertDialog
- bots - 如何从另一个 Telegram 组和频道获取和读取数据
- excel - 我想在一个范围内查找多个字符串,然后对于每个查找,用文本填充相邻的单元格