python - 使用 db_manager 时,“QuerySet”对象没有属性 'login_name'

标签 python django

我正在编写一个 Django 应用程序,它从单独的 Bugzilla 数据库中获取错误信息。我的设置有两个数据库条目,非默认的是 bugzilla。

我创建了一个模型,其中包含我想要从 Bugzilla 配置文件表(包含用户)中获取的字段。

class Bugzilla_profiles(models.Model):
    class Meta:
        db_table = 'profiles'

    userid = models.PositiveIntegerField(primary_key=True)
    login_name = models.CharField(max_length=255)
    realname = models.CharField(max_length=200)

    def __unicode__(self):
        return self.login_name

当我尝试在 Django shell 中获取数据并尝试读取其中一个字段时,它说没有属性。我知道它应该在那里,因为如果我只是打印变量,它会通过 unicode 函数显示正确的属性。我尝试访问所有 3 个字段,但它们都给出了相同的错误。

>>> from bugscrub.models import Bugzilla_profiles
>>> bz_assigned_to = Bugzilla_profiles.objects.db_manager('bugzilla').filter(userid=11)
>>> bz_assigned_to
[<Bugzilla_profiles: user@testdomain.com>]
>>> bz_assigned_to.login_name
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'QuerySet' object has no attribute 'login_name'
>>> 

最佳答案

filter 返回 QuerySet对象,它不包含您的列名称作为属性。您可以使用 get相反:

bz_assigned_to = Bugzilla_profiles.objects.db_manager('bugzilla').get(userid=11)  # changed filter to get

或者您可以检索 QuerySet 的第 0 个位置(例如)的对象:

bz_assigned_to[0].login_name  # the login_name attribute of the first 'row' in the QuerySet

关于python - 使用 db_manager 时,“QuerySet”对象没有属性 'login_name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26077541/

相关文章:

python - 如何使用 numpy 加载没有固定列大小的数据

iphone - 从 python 向 iphone 发送推送通知

python - 如何以最短的时间从两个列表中映射最接近的整数?

python - Django 测试 VS pytest

django - **finally :* clause? 的语法错误在哪里

python - mongoengine 保存时操作错误

python - 用相对于其他四分位数的四分位数替换 DF 中的值

python - 脚本交互模式

python - 我如何在 Django 中签名字段?

python - 如果没有在 django 项目的 html 标签中分配 'action' 值,它仍然会渲染页面并将值提交到数据库,如何?