python - 来自 Django 中 Queryset 的特定查询
问题描述
我在 Django 中有一个名为 Accounts 的模型,它有 id、name、email 和 balance 字段。我想在访问详细信息页面时检索特定数据集。假设当我单击详细信息页面时,我通过一个字符串“名称”发送,其中包含帐户所属用户的名称。我正在尝试获取特定的查询,但无济于事。这是 Queryset 在Accounts.objects.all()
==>上返回的内容,<QuerySet [<Account: UserA>, <Account: UserB>, <Account: UserC>, <Account: UserD>, <Account: UserE>, <Account: UserF>, <Account: UserG>, <Account: UserH>, <Account: UserI>, <Account: UserJ>]>
我尝试过Accounts.objects.values().get(id=id)
,但它提供了一个包含 id、user_id 和 balance 的字典。我也想访问用户的电子邮件。
我试过Accounts.objects.get(username=name)
了,但它返回的错误太多,无法解包。
一种方法Accounts.objects.all()[id]
是便宜且不动态,因为如果我们删除一些用户,它就不会起作用。
用户/模型.py
from django.db import models
from django.contrib.auth.models import User
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
balance = models.IntegerField(default=0)
def __str__(self):
return str(self.user)
我在这里想念什么?或者这里出了什么问题?
解决方案
如果您想要特定数据而不是仅重复数据,则可以使用 get,但如果返回多个数据使用过滤器,例如:
得到
Accounts.objects.get(id=id).values('user__email') #user__ is name your field relational object
筛选
Accounts.objects.filter(user__username=name) # possible duplicate data, not unique
推荐阅读
- python - 为什么python在算法中只打印一个数据集?
- r - 在 lapply 中使用特定列计算多个回归分析
- python - 我正在尝试使用 python 从 postgressql 中的列中提取一个值。但我总是得到这个错误:
- typescript - 角度反应控制值未正确更新
- c++ - std::vector 中的 C++ 外部类(定义格式错误)
- react-native - 关于 react-native 应用程序中 pptx 文件的问题
- python - 将数据从 Django 发送到另一台服务器
- xml - XSD 验证错误。“发现问题始于:属性”
- python - PyQt5 过滤数据框
- mysql - MySQL的动态字段总和