我有一个由多个字段组成的Django模型。我只希望选择一个。Djano的唯一()仍然选择每个现有的字段
我只使用()作为,根据文档它应该只返回woodAsked
这里的字段。然而,返回的查询集仍将包含Painting
模型中的每个字段。
>>> a = Painting.objects.only('woodAsked')
>>> serializers.serialize("json",a)[1:200]
'{"model": "binaryQuestionApp.painting", "pk": 3, "fields": {"name": "Getty00052501.jpg", "objectNumber": "00052501.jpg", "collection": "Getty", "title": "pretty after al", "woodAsked": 0, "woodYes": '
我该如何选择'woodAsked'字段?
这正是我一直在寻找。我不明白()似乎。在'a = Painting.objects.only('woodAsked')'中,'a'不代表最初的查询吗?我会认为只有那些'木讷'字段会在那里。 –
@MitchellvanZuylen - 设想一个更复杂的模型,其中可能有数组字段可能需要更长的时间才能返回值。您并不需要这些值,因此在您的查询中找不到任何点。 'only'可以避免多余的读取时间 – Sayse
@MitchellvanZuylen'.only()'仍然会返回模型实例,但是会替换未加载描述符的字段,这些描述符将在第一次访问时从数据库获取字段。这是一个先进的功能,仅用于非常具体的性能调整。你不需要它。 (除非你已经广泛地描述你的应用,并得出结论说你需要它。) – knbk