【发布时间】:2023-03-11 03:06:01
【问题描述】:
在 Django 中单击“赞”按钮时出现错误 视频匹配查询不存在。
回溯
video_obj = Video.objects.get(id=video_id)
我按照 youtube 上的教程进行操作,但出现错误 当我点击喜欢按钮时出现错误 我该如何解决这个问题
这是我的视频模型
class Video(models.Model):
author = models.ForeignKey(Account, on_delete=models.CASCADE)
video = models.FileField(upload_to='post-videos', validators=[validate_file_extension])
title = models.CharField(max_length=100)
description = models.TextField(null=True, blank=True)
liked = models.ManyToManyField(Account, blank=True, related_name='likes')
我的看法
def like_unlike_videos(request):
user = request.user
if request.method == 'POST':
video_id = request.POST.get('video_id')
video_obj = Video.objects.get(id=video_id)
account = Account.objects.get(username=user)
if account in video_obj.liked.all():
video_obj.liked.remove(account)
else:
video_obj.liked.add(account)
like, created = Like.objects.get_or_create(username=account, video_id=video_id)
if not created:
if like.value == 'Like':
like.value = 'Unlike'
else:
like.value = 'Like'
else:
like.value = 'Like'
video_obj.save()
like.save()
data = {
}
data = {
'value': like.value,
'likes': video_obj.liked.all()
}
return render(request ,'video/the_video.html', data)
我的模板
<form action="{% url 'video:like-video-view' %}" method="POST" class="like-form" id='{{video.id}}'>
{% csrf_token %}
<input type="hidden" name="post_id" value={{video.id}}>
<button type="submit" class="ui button like-btn{{video.id}}">
{% if account not in video.liked.all %}
Like
{% else %}
Unlike
{% endif %}
</button>
<div class="ui grid">
<div class="column">
<div class="like-count{{video.id}}"> {{video.num_likes}} </div>
</div>
<div class="column">
likes
</div>
</div>
</form>
【问题讨论】:
标签: django django-models django-views django-forms django-templates