Цикл for в шаблоне django, возвращающий пустые элементы списка
Я выполняю цикл по полю joined
для моей модели Group и возвращаю список присоединившихся членов в моем шаблоне GroupDetail:
class Group(models.Model):
leader = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=55)
description = models.TextField()
joined = models.ManyToManyField(User, blank=True)
Каждый член в цикле for относится к пользователю (или имени пользователя), который присоединился к группе:
<ul>
{% for member in joined_members %}
<li>{{ member }}<li>
{% endfor %}
</ul>
В группе четыре члена, и все члены возвращаются, однако четыре пустых элемента списка также возвращаются в таком виде (через chrome dev tools):
<ul style="display: block;">
<li>joe</li>
<li></li>
<li>johnny</li>
<li></li>
<li>ralph</li>
<li>/li>
<li>mike</li>
<li></li>
</ul>
В этой конкретной группе всего четыре участника (Пользователи), поэтому я не понимаю, что происходит. Я предполагаю, что проблема связана с тем, как я передал данные в шаблон из моего представления:
class GroupDetail(DetailView):
model = Group
template_name = 'group_details.html'
def get_context_data(self, *args, **kwargs):
group = get_object_or_404(Group, id=self.kwargs['pk'])
joined_members = group.joined.all()
context = super(GroupDetail, self).get_context_data()
context["joined_members"] = joined_members
return context
Фактических ошибок нет, только эти четыре пустых элемента списка. Проблема в моем цикле for? Или в том, как я передаю свой контекст?
Я думаю, что вы понимаете через этот пример.
Мой models.py
class Post(models.Model):
post_id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100)
Мой views.py
from django.shortcuts import render
from blog.models import Post
def index(request):
post = Post.objects.all()
context = {'post':post}
return render(request, 'blog/bloghome.html', context)
Шаблон: bloghome.html
<div class="container">
{% for post in post %}
<div class="row">
<h3 class="mb-0">{{post.title}}</h3>
</div>
{% endfor %}
</div>
надеюсь, вы поймете
изменяю свой список на:
<ul>
{% for member in group.joined.all %}
<li>{{ member }}<li>
{% endfor %}
</ul>
Решил проблему для меня. Я также смог удалить строки, передающие joined_members
, но я не уверен, как именно это решило мою проблему. Но это помогло.