Django ORM查询帮助~~~

use*_*652 1 django django-models

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

first_name = ['John', 'Lian']
employees = Employee.objects.filter(firstname in first_name)
Run Code Online (Sandbox Code Playgroud)

在实际情况中,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)
Run Code Online (Sandbox Code Playgroud)

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

iko*_*tia 5

使用下一行:

employees = Employee.objects.filter(firstname__in = first_name)
Run Code Online (Sandbox Code Playgroud)

如果first_name字段是ManyToManyField(并且First_name模型包含字段"name"),您应该尝试这样的事情:

first_names = ['John', 'Lian']
employees = Employee.objects.filter(first_name__title__in = first_names)
Run Code Online (Sandbox Code Playgroud)

其他方式:

first_names = ['John', 'Lian']
instances = [First_name.objects.get(title = title) for title in first_names]
employees = Employee.objects.filter(first_name__in = instances)
Run Code Online (Sandbox Code Playgroud)