2017-04-12 6 views
1

私はDjangoで新しく、多対多の関係を発見しようとしています。djangoで多くの関係が多いオブジェクトをフィルタリングする方法

私はデフォルトのユーザーモデルと多くの関係に多くを持っている単語モデルを持っている:

from django.db import models 
from django.contrib.auth.models import User 

class Word(models.Model): 
    definition = models.CharField(max_length=350) 
    turkish = models.CharField(max_length=50) 
    english = models.CharField(max_length=50) 
    users = models.ManyToManyField(User) 

    def __str__(self): 
     return self.english 

    def summary(self): 
     return self.definition[:50] + "..." 

私は二人のユーザに属する例の単語オブジェクトを持っていると私はこの2人のユーザーだけがこの言葉を見たいですそれらのフィードページ上のオブジェクト。どのように私は以下のビュー機能を修正する必要がありますか?

from django.shortcuts import render 
from django.contrib.auth.models import User 

@login_required 
def home(request): 
    user = request.user 
    small = user.username.title() 
    words = Word.objects.filter(??????) #order_by('-english') 
    return render(request, 'intro.html', {'words': words, 'small' : small}) 

Basiclyは、私は言葉対象のユーザリストがauthourizedユーザーが含まれているかどうかを確認したい、それが含まれている場合、単語はデータベースから取得されます。これをどのようにコード化できますか?

答えて

3

私はあなただけ

words = Word.objects.filter(users=user) 

を行うには、いくつかのユーザーのためにチェックすることができるはずだと思う、あなたは何ができる

words = Word.objects.filter(users__in=[user1,user2]) 

のようなものが例のためdocsを見てください。

関連する問題