我有两个模型
class Employer(models.Model):
code = models.CharField(null=False,blank=False,default="")
class JobTitle(models.Model):
employer = models.ForeignKey(Employer,unique=False,null=False,default=0)
name = models.CharField(max_length=1000,null=False,default="")
我希望所有雇主的职位名称都少于X个字符。我怎样才能在Django中实现这个目标?
由于
答案 0 :(得分:2)
正确的代码是
Employer.objects.filter(jobtitle__name__regex="^.{0,20}$")
这将选择所有拥有职位名称最多且包括20
个字符的雇主。只需将20
替换为您需要的任何数字。
请注意,如果雇主有多个名称长度小于20个字符的JobTitles,它将多次返回该列表中的雇主。如果您不希望发生这种情况,则应将distinct()
添加到查询中,如下所示:
Employer.objects.filter(jobtitle__name__regex="^.{0,20}$").distinct()
现在,您只需将雇主退回一次,即使他们有多个简短的职位名称。
答案 1 :(得分:0)
试
Employer.objects.filter(jobtitle__name__regex="^\W{0, X}$")
使用正则表达式时,可以使用提供的正则表达式从数据库中过滤记录。在这种情况下,将返回名称中包含0到X符号的所有记录