我正在编写一个 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/