У меня есть 2 модели: Post
и Comment
, каждая может понравиться User
.
1) Конечно, общее количество лайков должно быть показано где-то рядом с каждым Post
или Comment
2) Но также у каждого User
должна быть страница со всем понравившимся контентом.
Итак, самый очевидный способ - это просто сделать это с полем m2m, что, по-видимому, приведет к большому количеству проблем в будущем.
А что по этому поводу?
Модели
1) Post
и Comment
должны иметь
users_liked_ids = ArrayField(models.IntegerField())
2) User
модель также должна иметь такие поля:
posts_liked_ids = ArrayField(models.IntegerField())
comments_liked_ids = ArrayField(models.IntegerField())
И каждый раз User
что-то нравится, выполняются два действия:
1) Идентификатор пользователя добавляет в поле users_liked_ids
сообщения / комментария
2) Идентификатор поста / комментария добавляет в поле posts_liked_ids/comments_liked_ids
пользователя
Вопросы:
1) Это хороший план?)
2) Будет ли эффективным сделать поиск при таком подходе, чтобы получить «Это сообщение / комментарий», но текущий пользователь
3) Будет ли лучше хранить лайки в отдельной таблице, а не в любимой
модель, но также в ArrayField
4) Возможно, лучше остаться с очевидным m2m?