如何仅将对象的一部分发送到django中的模板

Posted

技术标签:

【中文标题】如何仅将对象的一部分发送到django中的模板【英文标题】:how to send just one part of an object to template in django 【发布时间】:2018-02-18 20:59:27 【问题描述】:

我只想将对象的一部分发送到模板。

我有 2 个模型,如下所示:

class Person(models.Model):
    name = models.CharField(max_legth=50)
    sure_name = models.CharFiled(max_length=50)

class Office(models.Model):
    location = models.CharField(max_legth=50)

我还创建了如下模型:

class PersonOffice(models.Model):
    person = models.ForeignKey(Person)
    office = models.ForeignKey(Office)

现在,当我通过PersonOffice.objects.all()从数据库中获取数据时,数据如下:


    
        "pk": 0,
        "person": 
            "pk":0,
            "name":"Harry",
            "sure_name":"Potter"
            ,
        "office":
            "pk":5,
            "location":"Toronto"
        
    ,  
    
        "pk": 1,
        "person": 
            "pk":6,
            "name":"John",
            "sure_name":"Kelly"
            ,
        "office":
            "pk":6,
            "location":"NewYork"
        
       

我想通过render 函数将办公室发送到模板。我该怎么做? 谢谢

更新 我想在带有% for % 循环的模板中使用它。例如:

% for office in Offices %
    <p>Office location:  office.location </p>
% endfor %

我使用了以下代码:

offices = PersonOffice.objects.all().values('office')
print(offices)

以下是终端中的结果:

<QuerySet ['office': 1, 'office': 2, 'office': 11]>

【问题讨论】:

您可以发布您的views.py 文件以显示您当前的渲染位置吗? 你似乎在发送到模板之前序列化你的对象,不知道为什么 没有。我不序列化它们。只是为了在此处显示的一种好方法,我将它们显示为 json 格式。 【参考方案1】:

您可以使用values

PersonOffice.objects.values('office')

这将为每个对象输出一个带有office 的查询集。

编辑:

PersonOffice.objects.values('office__location')

【讨论】:

谢谢,我改了问题。通过使用values(),我不能像 office.location 那样使用。还有什么办法吗? 是的,您可以使用。值还输出一个查询集。另请参阅我的编辑。 @msln 我写了这段代码:% for office in offices % office.location &lt;br&gt;% endfor % 但它没有在 html 文件中显示任何内容 在渲染之前尝试打印上述查询的输出,看看输出是什么。你可能会看到一些东西 如果我只写% for office in offices % office % endfor %,它会显示我在values() 函数中提到的数据和字段。但我不能单独使用它们。

以上是关于如何仅将对象的一部分发送到django中的模板的主要内容,如果未能解决你的问题,请参考以下文章

将对象发送到Django中{%include%}标记中的子模板

Django如何在查询集中标记用户特定的对象以发送到模板?

如何将数据发送到 Django 中的基本模板?

Django - 如何正确地将列表从模板发送到 AJAX 以查看?

如何将字典对象的javascript列表发送到django ajax

Django 将用户发送到错误的模板位置?