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语句查询!
本文探讨了在Django框架下如何实现根据页面配置的动态条件进行数据库查询,通过组合使用Q对象实现复杂的过滤逻辑,避免直接使用SQL语句提高代码的可维护性和安全性。
2094

被折叠的 条评论
为什么被折叠?



