Дизайн БД для отслеживания шоу

#django #python-2.7 #django-models

#django #python-2.7 #django-модели

Вопрос:

Я разрабатываю страницу, которая позволит мне отслеживать мои телешоу. Я отключил модели БД, но есть одна вещь, в которой я не уверен. Я хочу, чтобы, если пользователь смотрел эпизод, он мог просто пометить эпизод как просмотренный, но я не знаю, должен ли это быть ForeignKey / ManyToMany или что-то еще из-за того, что некоторые пользователи могут просматривать эпизод, другие нет.. :

У кого-нибудь есть какие-либо предложения по этой проблеме? Я подумываю о создании новой модели под названием episodeWatched, но дублировать модель просто для этого не очень эффективно..

Комментарии:

1. Ну, может ли один пользователь смотреть много эпизодов? Может ли эпизод смотреть много людей? Я не уверен, что именно здесь спрашивают

2. Да, пользователь может смотреть много эпизодов, и эпизод может смотреть много людей.

3. Звучит как отношение «многие ко многим». Я бы создал модель (назовите ее чем-то вроде UserEpisodeWatched или любым другим именем, которое вам нравится), и чтобы она содержала идентификатор пользователя и идентификатор эпизода. Не должно быть слишком дорогостоящим, потому что у вас есть только два столбца.

Ответ №1:

Используйте ManyToManyField в User модели или модели вашего профиля пользователя, добавьте

 episodes=models.ManyToManyField(Episode)
  

Добавляйте эпизоды, когда пользователь смотрит их с помощью

 user.episodes.add(episode)
  

Найти все эпизоды, которые пользователь смотрел с

 Episode.objects.filter(user=user)
  

Или сделайте обратное, т. Е. Добавьте users поле в Episode модель на основе того, что вы хотите сделать

В документах Django приведен аналогичный пример со статьями и публикациями — https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many /

Документы Django также объясняют, как использовать другую модель для хранения дополнительных полей об отношениях, вы могли бы использовать ее, например, для хранения времени, когда пользователь смотрел эпизод.

https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships