1. 特殊业务条件下,用户的数据展示必须根据【数据库的中某字段的条件配置】进行【过滤后展示】
而这个展示条件,是在页面上进行配置的,即在页面上动态修改
而这个动态修改会要求DJango查询数据时,要根据页面上的配置进行查询,故需要下面的方式,进行复杂过滤查询
from django.db.models import Q
from django.shortcuts import render
# Create your views here.
from django.test import TestCase
from dynamic_db_router import in_database
from webservice.models import t_database_conf
class TestInDataBaseContextManager(TestCase):
external_db = {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'strategymonitor',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
with in_database(external_db):
# con=Q()
q1=Q()
q1.connector = "AND"
q1.children.append(("port__in", [22]))
q1.children.append(("port__in", [44]))
q2=Q()
q2.connector = "AND"
q2.children.append(("desc__icontains",'11'))
q1.add(q2, "OR")
#con.add(q2, "OR")
obj = t_database_conf.objects.filter(q1)
这里不使用SQL语句直接查询,依旧使用filter,极端条件下使用sql语句查询!