Python 如何使用graphene django在多个字段中使用或调节icontains

Python 如何使用graphene django在多个字段中使用或调节icontains,python,django,graphql,graphene-python,graphene-django,Python,Django,Graphql,Graphene Python,Graphene Django,我在Django有以下型号: 类工单(models.Model): company=models.CharField(blank=True,max_length=30,null=True) job=models.CharField(blank=True,max_length=30,null=True) category=models.CharField(blank=True,max_length=30,null=True) description=models.TextField(blank=T

我在Django有以下型号:

类工单(models.Model):
company=models.CharField(blank=True,max_length=30,null=True)
job=models.CharField(blank=True,max_length=30,null=True)
category=models.CharField(blank=True,max_length=30,null=True)
description=models.TextField(blank=True,max_length=500,null=True)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
定义(自我):
返回自己的工作
我对石墨烯有如下模式:


类JobPostNode(DjangObjectType):
类元:
#假设您有一个使用以下字段定义的动物模型
模型=职位
筛选器_字段={
“公司”:[“精确”、“icontains”、“istartswith”],
'job':['exact','icontains','istartswith'],
'类别':['exact','icontains','istartswith'],
“描述”:['exact','icontains','istartswith'],
}
接口=(relay.Node,)
类查询(graphene.ObjectType):
作业=中继.Node.Field(JobPostNode)
所有作业=DjangoFilterConnectionField(JobPostNode)
schema=graphene.schema(query=query)
我想使用
icontains
,而我将根据一个或不在和上获取数据;例如,以下查询:


{
  allJobs(job_Icontains: "t", company_Icontains: "v") {
    edges {
      node {
        company
        job
      }
    }
  }
}


应返回作业中有字母“t”或公司中有字母“v”的数据,而不是作业中的字母“t”和公司中的字母“v”。我该怎么做呢?

我知道怎么做了!对于我的模式,我写了以下内容:

导入石墨烯
从api_rest.models导入JobPost
从django.db.models导入Q
从graphene_django导入DjangObjectType
类作业类型(DjangObjectType):
类元:
模型=职位
类查询(graphene.ObjectType):
jobs=石墨烯。列表(
作业类型,search=graphene.String(),first=graphene.Int(),skip=graphene.Int()
)
定义解析作业(self、info、search=None、first=None、skip=None、**kwargs):
queryset=JobPost.objects.all()
如果搜索:
过滤器=(
Q(公司名称=搜索)
|Q(描述内容=搜索)
|Q(类别包含=搜索)
)
queryset=queryset.filter(过滤器)
如果跳过:
queryset=queryset[跳过:]
如果首先:
queryset=queryset[:first]
返回查询集
schema=graphene.schema(query=query)
现在,使用以下查询,我得到了我想要的结果:

{
  jobs(search: "transpo") {
    id
    company
    category
    job
    createdAt
  }
}

是的,这是可行的,但请添加到您的字段中,否则当您的站点获得一些真实的数据量时,它会慢到爬行的速度。谢谢@Melvyn,我认为它是由Django在我的情况下自动设置的。我看到数据库中每个记录的ID。应该很酷不?