我想创建一个用户可以看到自己喜欢的帖子的页面。如何修改以下模板以显示使用最喜欢的帖子?
{% 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)
看起来你需要的只是for-empty
{% for video in user.fav_videos.all %}
<td>{{ video.name }}</td>
{% empty %}
<td >No Bookmarked Videos</td>
{% endfor %}