2017-01-05 32 views
0

我有一個模型用Django ORM查詢不同slu two的兩個對象?

class Person(models.Model): 
    name=models.CharField() 
    slug=models.SlugField() 

現在,如果我想獲得蛞蝓john和人員thomas

我應該怎麼查詢得到的元組或列表這兩個對象,與slug=thomasslug=john

+0

是的,則可以使用(=),因爲這,** Person.objects.filter(Q(鼻涕蟲= 「托馬斯」 )| Q(slug =「john」))** –

回答

0

如果我undertsand好你的問題,你必須寫:

Person.objects.filter(slug__icontains="thomas", slug__icontains="john") 

此命令將顯示其中slug = '%thomas%' AND slug = '%john%'

+1

您的查詢意味着:'select * from person where(slug like'%thomas%'and slug like'%john%''。不是OP要求的。好吧,他實際上使用了'和'這個詞,但顯然他想要的是'或') –

2

你說你需要一個人與塞約翰所有對象slu as爲托馬斯。 但我認爲你的意思和需要是。 爲此,Django中有Q對象來獲取您所需要的。

from django.db.models import Q 

Person.objects.filter(Q(slug__icontains="thomas") | Q(slug__icontains="john")) 

對於病例和,這種解決方案是不夠的:

Person.objects.filter(slug__icontains="thomas", slug__icontains="john")