python - 在 Django 模板中访问模型数据

标签 python django django-models django-forms django-templates

我使用以下几行将数据传递到我的模板index.html,model1是我的models.py中的类。

     data = model1.objects.all()
     return TemplateResponse(request, 'index.html', {'data': data})

我可以使用 for 循环访问前端数据,如下所示

 {% for x in data %}
   <h3>{{x.name}}</h3>
   <h4>{{x.department}}</h4>
 {% endfor %}

由于此数据中有多个对象,我的问题是,如果我只想访问具有特定名称的特定对象的部门,我该怎么做?

例如,我在这里使用 for 循环,考虑数据中有两个对象。那么输出将是

name1
department1
name2
department2

所以现在如果我只需要访问 name2 而没有任何循环,我该怎么做?

更新问题:我正在使用 html 更新此问题,以便问题看起来更清晰。

table id="example" class="table table-striped" cellspacing="1" width="100%">
    <thead>
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Department</th>
    <th>View/Edit</th>
  </tr>
</thead>
<tbody>
  {% for x in data %}
  <tr>
    <td>{{x.id}}</td>
    <td>{{x.name}}</td>
    <td>{{x.department}}</td>
    <td>View</td>
  <button type="button" class="btn-sm btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  view</button></td>
  </tr>
  {% endfor %}

</tbody>

这就是我的 html 的样子,我在这里使用数据表。因此,所有数据都会自动捕获到表中。正如您所看到的,每一行都有一个我将实现的 View 按钮。用户单击 View 按钮后,我应该弹出一个模式对话框来显示所有其他详细信息,例如 {{x.dateJoined}} 等我未在表中显示的信息。但是,如果我使用单独的 View 来弹出此对话框,我应该从模板向该 View 发送一个请求,说明用户单击了哪一行(带有某个 ID)。我怎样才能做到这一点?如何将 View 按钮与此处的相应行绑定(bind)?

最佳答案

您需要编写自定义模板标签,它将采用查询集和过滤参数并返回适当的对象,您可以使用 simple_tag :

myapp/templatetags/myapp_tags.py

from django import template

register = template.Library()


@register.simple_tag
def get_model1_object(queryset, **filters):
    if not filters:
        raise template.TemplateSyntaxError('`get_model1_object` tag requires filters.')
    retrun queryset.filter(**filters).first()

然后在模板中:

{% load get_model1_object from myapp_tags %}

{% get_model1_object data name='blah' as obj %}

注意:您的过滤条件可能会产生多个结果,但在 get_model1_object 中,我仅返回第一个对象,假设您的条件将严格一点,根据您的需要进行更改。

关于python - 在 Django 模板中访问模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335671/

相关文章:

python - Django 1.9.0 :Page not found 404 Django media files

Django 模板 : How to use values/values_list

Django Admin'页面未在/admin/中找到

Django 1.10 UUIDField 返回字符串或 UUID

django - 指定 Django 相关模型排序顺序

python - Beautiful Soup 和 Pandas 的 UTF-8 错误

javascript - 如何为 Bokeh 回调过滤器的一部分编写 Javascript 代码,以便我可以按数字和类别进行过滤?

python - Jython:导入错误:没有名为 multiarray 的模块

django - 强制django使用MYISAM存储引擎创建表

python - 如何使用 Jupyter Notebook 进行打印