Django 1.11,不在模板中显示数据

时间:2018-05-11 18:37:20

标签: python django

我是一个简单的模特

class Task(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.PROTECT, related_name='+')
    name_task = models.CharField(max_length=1000)
    label_task = models.ManyToManyField(LabelTask)
    executive_man = models.ManyToManyField(User)

但是在模板中,无法呈现所有数据,例如,来自视图的代码看起来像

def task_detail(request, pk):
    task = get_object_or_404(Task, pk=pk)
    return render(request, 'task/task_detail.html', {'task': task})

模板看起来像

<small>{{ task.author }}</small>
<h1>{{ task.name_task }}</h1>
<p>Label - {{ task.label_task }}</p>
<p>Executive - {{ task.executive_man }}</p>

但所有数据都显示良好,但标签 - task.LabelTask.None
执行 - auth.User.None

我不对 标签 - 而不是数据是task.LabelTask.None
执行 - 而是选择用户 - auth.User.None
但在我的管理员看来一切都很好。
希望你帮帮我 非常感谢你。

1 个答案:

答案 0 :(得分:1)

这是因为这些字段是ManyToManyField, 要访问它们,您需要在模板中使用all,在python代码中使用all()

p>Label - {{ task.label_task.all }}</p>
<p>Executive - {{ task.executive_man.all }}</p>

或者你可以循环使用它们

p>Label - 
      {% for label in task.label_task.all %}
        {{label}} {% if not forloop.last %},{% endif %}
      {% empty %}
           No label tasks
      {% endfor%}</p>

<p>Executive - {% for man in task.executive_man.all %}
        {{man}} {% if not forloop.last %},{% endif %}
      {% empty %}
           No Men
      {% endfor%}</p>