Django ORM查询帮助~~~

时间:2011-01-17 23:31:50

标签: django django-models

我想通过提供列表来过滤一个类

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

在实际情况中,f​​irst_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)

注意:这不是真正的模型,但可以代表这个问题。

1 个答案:

答案 0 :(得分:5)

使用下一行:

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

如果first_name字段是ManyToManyField(并且First_name模型包含字段“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)