class Search(models.Model):
date1 = models.DateTimeField()
date2 = models.DateTimeField()
type1 = models.IntegerField()
type2 = models.IntegerField()
type1和type2只能够取0或者1。现在要对这张表进行查询,输入的参数包括d1, d2 DateTime类型,t1, t2, date_search_type Integer类型。 查询要求如下:
当 date_search_type == 0 时, 查询要求d1 < date1 < d2
当 date_search_type == 1 时, 查询要求d1 < date2 < d2
当 date_search_type == 2 时, 查询要求date1 > d1, date2 < d2
当t1 == 0 时,查询type1 == 0的项,
当t1 == 1 时,查询type1 == 1的项,
当t1 == 其它是,所有type1项都符合要求。
t2对于type2的影响同t1对type1的影响。
之前只是根据datesearch_type来查询的时候,我试图先得到一个str='date1gte=d1,date2_lte=d2'的字符串,然后带入到Search.objects.filter()里面,但是发现能执行,就写了3个Search.objects.filter(),但是现在加入了type1和type2,如果继续按照上面那样做的话组合的情况就会达到27种,太复杂了。
请问一下这个时候怎么来处理比较好呢?谢谢大家
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.