2016-06-01 4 views
0

私は2つの主要なモデルを持っています、漫画と問題、単一の漫画は複数の問題があります。私は、特定のユーザーが読んだ問題をどのように取得するかを理解しようとしています。 ReadIssueという別のモデルを作成して読み込み状態を保存することを考えていましたが、ユーザーごとにそれぞれの問題で読み込みプロパティを取得する方法を理解できません。djangoグローバルオブジェクト個人ユーザーの関係

答えて

1

私はあなたのテキストで理解するものから、これは

class Comic(models.Model): 
    name = models.CharField(max_length=100) 

class Issue(models.Model): 
    comic = models.ForeignKey(Comic, related_name='issues') 
    title = models.CharField(max_length=100) 

    def was_read_by(self, user): 
     return bool(self.users.filter(user=user).count()) 

class ReadIssue(models.Model): 
    user = models.ForeignKey(User, related_name='read') 
    issue = models.ForeignKey(Issue, related_name='users') 

今、あなたはあなたがちょうど組み合わせかどうかを確認し、この

user = Users.objects.get(pk=1) 
comic = Comic.objects.get(pk=1) 

first_issue = comic.issues.all().first() 

user_read_it = first_issue.was_read_by(user) 

のようなクエリを行うことができます基本的なモデルを構築するための方法かもしれませんテーブルにuser-issueが存在します。もちろん、そのペアにはindex_togetherを追加することをお勧めします。これは、そのテーブルですべてのルックアップを実行する可能性が高いためです。

これらの小さなヘルパーメソッドをモデルに追加することで、全体を非常に表現力豊かにして従うことができます。

+0

ありがとうございます!これは私が探していたものです。これをテンプレートで使用するには、テンプレートタグを正しいものにしますか? – ZucchiniZe

+0

はい。 'comic.issues.all%の問題のための% 'のように、' '漫画' 'のすべての問題をループするような、あなたが直接使うことができるものもあります。 – C14L

関連する問題