0

這裏我使用了4個模型,一個是基礎模型,另外三個是從基礎模型派生的模型。我想在這三個模型之間過濾數據,其中引用id是常見的。我在下面添加代碼供您參考。Django篩選來自多個模型的數據

models.py

class User(models.Model): 
    name = models models.CharField(max_length=20) 

class JSDetails(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    visiblity = models.BooleanField(default=True) 

class JSPersonal(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    JS = models.ForeignKey(JSDetails, unique=True) 
    country = models.CharField(max_length=100) 

class JSSkills(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    JS = models.ForeignKey(JSDetails, unique=True) 
    skill = models.CharField(max_length=100) 

views.py

def Result(request): 
    skills = request.GET['skill'] 
    country = request.GET['country'] 
    query = Q(skill__icontains=skills) 
    query1 = Q(country__icontains=country) 
    query2 = Q(visiblity=True) 

下面這兩個關鍵字(技能= 「蟒蛇」,國家= 「USA」)都得到匹配或任一個與上面四個模型匹配。它顯示結果如名稱,技能和country.Please一些幫助我。

回答

1
def Result(request): 
    skills = request.GET['skill'] 
    country = request.GET['country'] 
    query_skills = Q(jsskills__skill__icontains=skills) 
    query_country = Q(jspersonal__country__icontains=country) 
    query_visibility = Q(jsdetails__visiblity=True) 
    users = User.objects.filter(query_skills | query_country, query_visibility) 
    return render_tor_response('sometemplate.html', {'users': users}) 

然後在模板中,您將循環使用上下文中的users