2016-10-11 9 views
0

私は私のテレビ番組を追跡することができるページを設計しています。私はDBモデルをダウンしましたが、私には分かりません。ユーザーがエピソードを視聴した場合、視聴したエピソードをマークすることができますが、それがForeignKey/ManyToManyである必要があるかどうかわからない、または一部のユーザーがエピソードを視聴できる、他はしていません..:\DBのショートラッカーのデザイン

誰かがこの問題の提案をしていますか?私はepisodeWatchedと呼ばれる新しいモデルを作ることを考えていますが、それは、このために単にモデルを複製することは非常に効率的ではありません...

+0

1人のユーザーが多くのエピソードを視聴できますか?エピソードを多くの人が見ることができますか?私はここに正確に何が尋ねられているのかわからない – Sayse

+0

はい、ユーザーは多くのエピソードを見ることができ、多くの人がエピソードを見ることができます。 –

+1

多人数の関係のように聞こえます。私はモデル(UserEpisodeWatchedのようなもの、またはあなたが好きな名前)を作成し、UserのIDとEpisodeのIDを保持させます。あなたは2つの列しかないので、あまりに高価ではありません。 –

答えて

0

Userモデルまたはユーザープロファイルのモデルでは、のManyToManyFieldを使用して、追加

episodes=models.ManyToManyField(Episode) 

ユーザーが

user.episodes.add(episode) 

ユーザーが

Episode.objects.filter(user=user) 
を見たすべてのエピソードを見つけて、それを視聴する際のエピソードを追加します。また、どのように説明し https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/

Djangoのドキュメントを -

またはその逆を行うには、つまり、あなたがDjangoのドキュメントは、記事や出版物と同様の例をリスト

何をしたいのかに基づいてEpisodeモデルにusersフィールドを追加します他のモデルを使用して関係についての余分なフィールドも保存するには、たとえば、ユーザーがエピソードを見た時刻を保存するために使用できます。

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

関連する問題