0

여기에서는 4 개의 모델 중 하나를 기본 모델로 사용하고 다른 3 개는 기본 모델에서 파생 된 모델을 파생시킵니다. 나는이 세 모델 사이에서 참조 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") 일치를 얻거나 하나 둘 하나는 위의 네 가지 모델과 일치합니다. 이름, 기술 및 국가와 같은 결과를 표시합니다. 제발 도와주세요.

답변

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을 반복합니다.