Django的过滤器depeding对相关模型的领域
问题描述:
的字符数我有两个型号,使得Django的过滤器depeding对相关模型的领域
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="")
,我想获得它的名字JOBTITLE小于X chracters所有雇主。我怎样才能在Django中实现这一点?
感谢
答
这个正确的代码
Employer.objects.filter(jobtitle__name__regex="^.{0,20}$")
这将选择所有谁拥有职位名称直至并包括20
雇主长字符。只需用您需要的任何号码替换20
即可。
请注意,如果雇主有多个JobTitles,其名称长度少于20个字符,它将多次返回列表中的雇主。如果你不希望这样的事情发生,你应该添加distinct()
到查询,如下所示:
Employer.objects.filter(jobtitle__name__regex="^.{0,20}$").distinct()
你现在只得到了雇主回来一次,即使他们有多个短JobTitles。
答
尝试
Employer.objects.filter(jobtitle__name__regex="^\W{0, X}$")
当您使用正则表达式,你可以从所提供的正则表达式数据库中筛选记录。在这种情况下与名称包含0到X标志的所有记录将被退回
谢谢,但我们不要在某处写作业标题吗?那regex究竟意味着什么? – brsbilgic
此代码不起作用。请参阅下面的工作查询。 – mmcnickle
oo是的,我犯了错误,当然应该是jobtitle而不是employer_set – szaman