Django ORM “OR”怎么查询?“like”如何使用
数据库查询的时候经常会使用like:如"select * from table where title like '%aa%' "
那在Django ORM当中如何使用like?
__icontains为like
obj=App.objects.filter(Title__icontains=key)
上面代码的意思换为sql语句的意思就是select * from Apptable where title like '%key%'
Django ORM “OR”怎么查询
obj=App.objects.filter(Q(Title='aaa')|Q(Title='bbb'))
上面就是查询title为aaa或bbb的内容
Django ORM “OR”和“like”结合一下:
obj=App.objects.filter(Q(Title__icontains=key) | Q(KFS__icontains=key))
Django ORM “OR”和“like”结合使用时KFS为外键时:
model.py
class KaiFaShang(CreatCommon):
Title = models.CharField(max_length=200, verbose_name='名称', blank=True)
def __str__(self):
return self.Title
class Meta:
db_table = "sg_kaifashang"
verbose_name = '开发商'
verbose_name_plural = '开发商列表'
class LouPan(CreatCommon):
KFS = models.ForeignKey(KaiFaShang, models.SET_NULL,blank=True,null=True,verbose_name='开发商',db_column='KFS',
help_text='选择开发商的企业名称,如果没有这个企业可以添加',)
def __str__(self):
return self.Title
class Meta:
db_table = "sg_loupan"
verbose_name = '楼盘'
verbose_name_plural = '楼盘列表'
views.py
lp_obj=LouPan.objects.filter(Q(Title__icontains=key) | Q(KFS__Title__icontains=key))
这里KFS__Title引入外键KFS的Title ,__icontains为like
Django ORM “OR”和“like”结合使用时KFS为外键,多条件
models.py同上
views.py
lp_obj=LouPan.objects.filter(Q(Title__icontains=key) | Q(KFS__Title__icontains=key),Status=99).order_by('-UpdateTime')[:10]
THE END