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