Django显示用户收藏的页面

问题描述 投票:1回答:1

我想创建一个用户可以看到自己喜欢的帖子的页面。如何修改以下模板以显示使用最喜欢的帖子?

{% if (user has any favorite posts %}
    show here
{% else %}
            User has no favorite posts
{% end if %}
        </tr>

这是.html文件

<td>
    <form method='POST' action="{% url 'foobar:favourite_post' video.id %}">
        {% csrf_token %}
        <input type='hidden'>
        <button type='submit'>Bookmark</button>
    </form>
</td>

这是view.py文件

def favourite_post(request, fav_id):
    video = get_object_or_404(Video, id=fav_id)
    if request.method == 'POST':
        video.favourite.add(request.user)

    return redirect('/foobar/%s' % fav_id)

这是models.py文件

from django.contrib.auth.models import AbstractUser

class ProjectUser(AbstractUser):

    def __str__(self):
        return self.email

class Video(models.Model):
    name = models.CharField(max_length=255),
    videofile = models.FileField(upload_to="static/videos/"),
    favourite = models.ManyToManyField(ProjectUser, related_name="fav_videos", blank=True)
python django
1个回答
1
投票

看起来你需要的只是for-empty

{% for video in user.fav_videos.all %}
    <td>{{ video.name }}</td>
{% empty %}
    <td >No Bookmarked Videos</td>
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.