2017-04-12 38 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] + "..." 

我有屬於兩個用戶爲例字對象,我想只有這兩個用戶看到這個詞對象在他們的feedpage上。我應該如何糾正下面的視圖功能?

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}) 

基本上,我想檢查Word對象的用戶列表中包含authourized用戶,如果它包含了,這個詞從數據庫中取得。我如何編碼?

回答

3

,我認爲你應該能夠做到

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

,並檢查了幾個用戶,你可以做這樣的事情

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

看一看的docs的例子。

相關問題