如何获取object.filter()django中的所有字段
Posted
技术标签:
【中文标题】如何获取object.filter()django中的所有字段【英文标题】:how to get all fields in a object.filter() django 【发布时间】:2017-01-24 20:31:03 【问题描述】:我正在尝试显示所有字段,但我只获得了我的一些字段。我不确定为什么这是我的观点
我的观点导入
def switchingowners(request):
ownersofcar = Owner.objects.filter(CarID = request.user['CarID'])
for owner in ownersofcar :
addingOwner = models.Owner(CarID=form['CarID'],Owner_Date=ownerofcar['Owner_Date']
)
好的,我的模型看起来像
class Owner(models.Model):
carID = models.ForeignKey(Car)
Owner_Entry_Number = models.IntegerField()
Owner_Date = models.DateField('Proprietor start date', null=True, blank=True)
Owner_Last_Name = models.CharField(max_length=50, null=True, blank=True)
Owner_First_Name = models.CharField(max_length=50, null=True, blank=True)
Owner_Middle_Initial = models.CharField(max_length=6, null=True, blank=True)
Owner_Address = models.CharField(max_length=80, null=True, blank=True)
我的数据库后端包含所有字段的信息
ownersofcar = Owner.objects.filter(CarID = request.user['CarID'])
它告诉我 TypeError 我看到的过滤对象是
self
[<Owner: 1248612 MALCOLM DESRIVIERES >, <Owner: 1248612 JULIETTA REMY >, <Owner: 1248B612 THERESA DESIR >, <Owner: 1248B612 ALEXANDER JEAN>]
其他领域到底在哪里?我没有看到任何关于确定我想要接收哪些字段的文档,因为我想要它们!
每个字段都有重要信息 我基本上把所有的名字从一辆车换到另一辆车/多辆车
但过滤器不会返回所有字段
【问题讨论】:
其他字段都有,为什么你认为没有?您可以像访问任何其他属性一样访问它们。 但是,您应该显示代码,它会给出 TypeError。 这只是字符串表示。如果您想查看其中的所有字段,只需覆盖__str__
方法并返回您想要的表示。
它告诉我类型错误并指定它正在寻找的字段!它会打印查询集附带的字段,并且缺少一些字段
我也做了一个 logger.error(ownerofcar) 但它仍然没有向我显示所有字段
【参考方案1】:
我假设您收到类型错误是因为您正在执行request.user['CarId']
。除非您使用自定义用户类,否则这是无效的。
所有字段都在那里,您看到的只是结果的字符串表示形式,由Owner
的__str__
或__unicode__
方法定义。
更改此方法或打印您想要的字段,例如:
for owner in ownersofcar:
logger.error(owner.Owner_Address)
【讨论】:
是的,当我这样做时,我得到 'QuerySet' 对象没有属性 'Owner_Address' 那么你有一个 QuerySet,而不是单个对象。简单来说,QuerySet 是一个对象列表,没有属性。我建议查看有关进行查询的 Django 文档:docs.djangoproject.com/en/1.10/topics/db/queries【参考方案2】:感谢你们的一个建议,我意识到字段丢失时的错误,我的同事重写了 str() 方法并且没有注意这一点 并且覆盖正是它所需要的。不包括其他字段
谢谢大家
【讨论】:
除了 Daniel 所说的关于 TypeError 的内容之外,您似乎仍然错过了其他人的观点。田野都在那里。 str 表示就是用户定义的模型表示。表示不是模型。这些字段在那里并且可以访问 - 如果你这样做,使用你的代码示例,并且 ownerofcar 是查询集,你会看到,例如ownerofcar[0].Owner_Last_Name 将为您提供该字段。以上是关于如何获取object.filter()django中的所有字段的主要内容,如果未能解决你的问题,请参考以下文章
Django,检测object.filter是不是返回0个对象