Реализация системы добавления в избранное зарегистрированным пользователем

Всем привет! Никак не могу найти какую-либо информацию о реализации системы добавления в избранное для зарегистрированного пользователя.

В модели есть модель Post. В ней пару полей формата String. Поле author, в котором указывается какой пользователь сделал POST запрос и тд.

Но как сделать так, чтобы пользователь мог добавить этот Post к себе в "избранное", чтобы потом можно было получить JSON ответ со всеми постами, которые он добавил себе. Ну и соответсвенно, чтобы можно было удалить из избранного.

Есть-ли какие-либо идеи?


Ответы (2 шт):

Автор решения: user355827

ну идея есть добавить посту поле favorites = models.BooleanField(default=False) добавить кнопку для поста избранное. и написать обработчик этой кнопки который будет при нажатии менять значение поля favorites

→ Ссылка
Автор решения: Игорь

Можно в модель Post добавить поле ManyToManyField с моделью User. И те кто будут добавлять себе Post в избранное будут создаваться в промежуточной таблице БД. В которой будет идентификатор поста и идентификатор пользователя. Что то вроде:

class Post(models.Model):
    ...
    users = models.ManyToManyField(User, related_name='favorite_posts')

Для добавления постов избранное используется следующий код:

user.favorite_posts.add(Post.objects.get(id=1))

Для удаления:

user.favorite_posts.remove(Post.objects.get(id=1))

Достать все избранные посты:

user.favorite_posts.all() 
→ Ссылка