首页 > 解决方案 > 来自 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)

我在这里想念什么?或者这里出了什么问题?

标签: pythondjangodatabase

解决方案


如果您想要特定数据而不是仅重复数据,则可以使用 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

推荐阅读