2011-01-17 3 views
1

목록을 제공하여 클래스를 필터링하려고합니다.장고 ORM 쿼리 도움 ~~~

first_name = ['John', 'Lian'] 
employees = Employee.objects.filter(firstname in first_name) 

실제 경우 first_name은 즉시 생성됩니다.

이제 'global name 'firstname' is not defined' 오류가 발생했습니다. firstname이라는 Employee 클래스에 필드가 있다고 확신합니다.

어떻게 해결할 수 있습니까? 도와 줘서 고마워!

모델 클래스

class Employee(models.Model): 

    status= fields.BooleanField(default=True) 
    title = fields.CharField(max_length=128) 
    first_name = models.ManyToManyField('First_name', blank=True, null=True) 

주의 사항 : 실제 모델이 아니지만이 문제를 나타낼 수 있습니다.

답변

5

다음 줄을 사용하십시오

first_names = ['John', 'Lian'] 
employees = Employee.objects.filter(first_name__title__in = first_names) 

또 다른 방법 : FIRST_NAME 필드가 ManyToManyField입니다

employees = Employee.objects.filter(firstname__in = first_name) 

경우 (그리고 FIRST_NAME 모델 필드 "이름"을 포함)을, 당신은 이런 식으로 뭔가를 시도해야

first_names = ['John', 'Lian'] 
instances = [First_name.objects.get(title = title) for title in first_names] 
employees = Employee.objects.filter(first_name__in = instances) 
+0

'int() 인수는'ManyRelatedManager '가 아닌 문자열 또는 숫자 여야합니다. – user469652

+0

Can 니 모델을 보여줘? – ikostia

+0

모델을 업데이트했습니다. – user469652