带有相关模型的Django查询只显示一个模型的字段

带有相关模型的Django查询只显示一个模型的字段,django,django-select-related,Django,Django Select Related,我有三个相关的模型,我想做一个查询,从所有三个模型中获得字段的组合 invoice_select = Ordered_item.objects.filter(oi_order = o_id).select_related() 生成SQL语句,我可以使用debug_工具栏检查该语句。SQL语句包含相关模型的所有字段 invoice_select = Ordered_item.objects.filter(oi_order = o_id).select_related() 将查询结果发送到带有

我有三个相关的模型,我想做一个查询,从所有三个模型中获得字段的组合

invoice_select = Ordered_item.objects.filter(oi_order = o_id).select_related()
生成SQL语句,我可以使用debug_工具栏检查该语句。SQL语句包含相关模型的所有字段

invoice_select = Ordered_item.objects.filter(oi_order = o_id).select_related()
将查询结果发送到带有

 return render_to_response('invoice_select.html', {'invoice_select':invoice_select} 
仅提供为订单商品模型定义的表达式,其中包含:

   def __unicode__(self):
   return u'%s -- %s -- %s' % (self.oi_order, self.oi_pos, self.oi_item) 
因此,查询结果如下所示:

{'invoice_select': [<Ordered_item: 1109231733 -- 01 -- BP-0516-aa>]} 
{'invoice_select':[]}
哪些字段正是在defunicode(self)中定义的字段:

如何向查询结果中添加更多字段?为什么SQL中的字段不会显示在查询结果中


任何帮助都将不胜感激。

您只需查看对象的字符串表示,它显然使用了
\uuuuuuunicode\uuuu
方法。当然,如果您直接访问对象,字段就在那里。

当您将对象作为字符串引用时,\uuuuUnicode\uuuuuu方法将自动被调用。您可以简单地将您关心的字段放在_unicode__)方法中(假设制造商模型):

如果你不想把它放在_unicode _;方法中,它确实可以用于其他事情,你可以很容易地把它放在一些单独的方法中,直接调用那个方法,而不是隐式调用_unicode _;方法

还要进一步注意,若manufacturer可能为null,那个么您需要处理它,可能需要使用try-catch块

下面是一个单独的方法的样子:

def get_str(self):
    return u'%s %s' % (self.oi_order, self.manufacturer.name)
然后,如果您实例化了一个oi:

str = oi.get_str()

您是如何准确地输出发票的?如果您只是将
{{invoice\u select}}
放在您的视图中,Django将基本上输出:
{{invoice\u select.\uuuuu unicode\uuuu()}
。如果你想输出更多或不同的内容,你需要编辑你的视图。请举例说明如何访问其他字段。我不知道如何访问相关对象的字段。你能给我举个例子吗?分开的方法看起来怎么样?你能给我举个例子吗?是否可以在视图中对不同的模型生成第二个查询,并将两个不同查询的结果通过一个return\u to\u response调用传递给模板?我将用一个简单的方法更新条目,但它应该非常简单。我不确定你的第二条评论到底在问什么,这可能值得单独发表一篇文章。