Python Django模板没有';我不能像预期的那样渲染模型
所以我上了这堂课。现在对于这门课,我有两个选择:“课堂”和“研讨会”,我希望每次我在其中任何一门课上添加一节课,模板将首先显示选择,然后显示所有的课。 示例:课程将有讲师1、讲师2、讲师3等。 现在的问题是,当我迭代时,选择每次都会显示,每次讲座都会显示,我希望每个选择只显示一次Python Django模板没有';我不能像预期的那样渲染模型,python,django,Python,Django,所以我上了这堂课。现在对于这门课,我有两个选择:“课堂”和“研讨会”,我希望每次我在其中任何一门课上添加一节课,模板将首先显示选择,然后显示所有的课。 示例:课程将有讲师1、讲师2、讲师3等。 现在的问题是,当我迭代时,选择每次都会显示,每次讲座都会显示,我希望每个选择只显示一次 class Lecture(models.Model): course = models.ForeignKey('Course', on_delete=models.CASCADE, default='', r
class Lecture(models.Model):
course = models.ForeignKey('Course', on_delete=models.CASCADE, default='', related_name='lectures')
lecture_category = models.IntegerField(choices=((0, "Classes "),
(1, "Seminars"),
))
lecture_title = models.CharField(max_length=100)
content = models.TextField()
link = models.URLField(blank=True)
file = models.FileField(upload_to='documents', blank=True)
def __str__(self):
return self.lecture_title
{%中的c为%}
{{c.get_讲座_分类_显示}
- {{c.演讲题目}
- {{c.content}}
{%if c.link%}
- {{c.link}
{%if c.file%}
{%endif%}
{%endif%}
{%endfor%}
有一个名为regroup的模板标记,可用于此操作。请参阅第页的“重组”部分
{%按讲座类别将讲座重新分组为类别列表%}
{类别列表%中的类别的百分比}
- {{category.grouper}}
{category.list%中c的%s}
- {{c.演讲题目}
- {{c.content}}
等
{%endfor%}
{%endfor%}
编辑:
正如Daniel Roseman所指出的,您还必须按照要在视图中重新组合的字段对查询进行排序。在这种情况下,您必须按讲座类别安排讲座。否则,上述方法将不起作用。有一个名为regroup的模板标记可用于此操作。请参阅第页的“重组”部分
{%按讲座类别将讲座重新分组为类别列表%}
{类别列表%中的类别的百分比}
- {{category.grouper}}
{category.list%中c的%s}
- {{c.演讲题目}
- {{c.content}}
等
{%endfor%}
{%endfor%}
编辑:
正如Daniel Roseman所指出的,您还必须按照要在视图中重新组合的字段对查询进行排序。在这种情况下,您必须按讲座类别安排讲座。否则上述方法将不起作用。我们可以获得实际输出的屏幕截图吗?在这里我们可以得到实际输出的屏幕截图吗?在这里,我添加了一个示例,假设您希望查询结果按字段“讲座\类别”字段分组。在将讲座发送到模板之前,您还需要按讲座\类别对其进行排序。您说得很对。为了完整起见,我把它添加到了答案中。是的。最后我成功了。感谢您的支持。我添加了一个示例,假设您希望查询结果按字段“讲座\类别”字段分组。您还需要按讲座\类别对讲座进行排序,然后再将其发送到模板。您说得很对。为了完整起见,我把它添加到了答案中。是的。最后我成功了。谢谢你的支持。
{% regroup lectures by lecture_category as category_list %}
<ul>
{% for category in category_list %}
<li>{{ category.grouper }}
<ul>
{% for c in category.list %}
<li>{{ c.lecture_title }}</li>
<li>{{ c.content }}</li>
...etc
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>