2011-09-29 120 views
0

的字符數我有兩個型號,使得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中實現這一點?

感謝

回答

2

這個正確的代碼

Employer.objects.filter(jobtitle__name__regex="^.{0,20}$") 

這將選擇所有誰擁有職位名稱直至幷包括20僱主長字符。只需用您需要的任何號碼替換20即可。

請注意,如果僱主有多個JobTitles,其名稱長度少於20個字符,它將多次返回列表中的僱主。如果你不希望這樣的事情發生,你應該添加distinct()到查詢,如下所示:

Employer.objects.filter(jobtitle__name__regex="^.{0,20}$").distinct() 

你現在只得到了僱主回來一次,即使他們有多個短JobTitles。

0

嘗試

Employer.objects.filter(jobtitle__name__regex="^\W{0, X}$") 

當您使用正則表達式,你可以從所提供的正則表達式數據庫中篩選記錄。在這種情況下與名稱包含0到X標誌的所有記錄將被退回

+0

謝謝,但我們不要在某處寫作業標題嗎?那regex究竟意味着什麼? – brsbilgic

+0

此代碼不起作用。請參閱下面的工作查詢。 – mmcnickle

+0

oo是的,我犯了錯誤,當然應該是jobtitle而不是employer_set – szaman