2011-01-17 2 views
1

Я хочу фильтровать класс, предоставляя списокДжанго ORM запрос помогает ~~~

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

В реальном случае first_name генерируется на лету.

И теперь я получил ошибку 'global name 'firstname' is not defined'. Я уверен, что есть поле в классе Employee с именем firstname.

Как это исправить? Спасибо за помощь!

класс Модель

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

Используйте следующую строку:

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

Если first_name поле ManyToManyField (и First_name модель содержит поле "имя"), вы должны попробовать что-то вроде этого:

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

Другой способ:

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

Смежные вопросы