Django views.py: Добавить в избранное - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь отредактировать html-страницу, чтобы зарегистрированный пользователь мог добавить в избранное video.id

Здесь находится файл .html

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

Здесьэто urls.py файл

app_name = 'foobar'

urlpatterns = [
    path('', views.f_ListView.as_view(), name='overview'),
    path('<int:pk>/', views.f_DetailView.as_view(), name='detailview'),
    path('<int:fav_id>/favourite_post/', views.favourite_post, name='favourite_post'),
]

Вот файл view.py

def favourite_post(request, fav_id):
    video = get_object_or_404(Video, id=fav_id)
    if request.method == 'POST': #Then add this video to users' favourite
        video.

   return render(request, 'foobar/%s' % fav_id)

Как редактировать Файл views.py , поэтому он зарегистрирован в базе данных, чтобы пользователь добавил это видео в избранное?

Вот файл 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)

Ответы [ 2 ]

1 голос
/ 28 марта 2019
def favourite_post(request, fav_id):
video = get_object_or_404(Video, id=fav_id)
    if request.method == 'POST':
        video.favourite.add(request.user)
        # Rest code
    return render(request, 'foobar/%s' % fav_id)
0 голосов
/ 28 марта 2019

Это может быть не так очевидно, вам нужно сначала получить текущего вошедшего в систему пользователя с помощью

request.user

если ваша функция просмотра не требует входа пользователя в систему, поэтому вам нужно будет проверить

if request.user is not None

затем добавьте его в список избранного к видео

video.favorite.add(request.user)

читайте больше в официальных документах. много ко многим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...