【问题标题】:Particular Query from Queryset in Django来自 Django 中 Queryset 的特定查询
【发布时间】:2021-11-02 14:05:08
【问题描述】:

我在 Django 中有一个名为 Accounts 的模型,它有 id、name、email 和 balance 字段。我想在访问详细信息页面时检索特定数据集。假设当我单击详细信息页面时,我通过字符串“名称”发送,其中包含帐户所属用户的名称。我正在尝试获取特定的查询,但无济于事。这是查询集在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],它既便宜又不动态,因为如果我们删除一些用户,它就不起作用了。
user/models.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)

我在这里缺少什么?或者这里出了什么问题?

【问题讨论】:

  • 请提供models.py
  • Accounts.objects.get(username=name) 返回什么?我的意思是,它会导致什么错误?
  • @bichanna 字段 'id' 需要一个数字,但得到了 'UserA'。
  • @RevTpark 你想从模型用户中搜索什么参数、id 或用户名?
  • @EkiSaputra 用户名

标签: python django database


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 2018-10-28
    • 2011-08-09
    • 2015-07-27
    • 1970-01-01
    • 2019-08-05
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多