我使用的是Django 1.11,Postgresql 9.2,python 3.4
如果事件类型为单,我想根据表格列event_type
选择数据,然后比较应该是相同日期的日期(今天' s) date else选择给定(今天' s)日期的所有日期,类型为重复出现。
但是我们无法使用单一查询来管理这个问题吗?就像我们在聚合中CASE
和WHEN
,THEN
一样?我尝试使用Q
对象,但没有运气。
我想检查价值何时是单一的'然后添加条件,否则另一个条件。
我找不到任何好的解决方案,目前我已经使用this
取得了成功today = datetime.date.today().strftime('%Y-%m-%d')
single_events = crm_models.EventsMeta.objects.filter(
event_type == "single",
repeat_start=today
)
recurring_events = crm_models.EventsMeta.objects.filter(
event_type == "recurring"
repeat_start__lte=today
)
all_events = single_events | recurring_events
有关详细信息,我的模型是:
class EventsMeta(models.Model):
event_type = models.CharField(max_length=50, choices=(("single","Single"),("recurring","Recurring")),
null=False, blank=False,default='single',verbose_name="Event Type")
repeat_start = models.DateTimeField()
repeat_end = models.DateTimeField()
答案 0 :(得分:1)
您可以将许多Q对象与()
个符号组合在一起。我是你的情况,我认为这样可行:
single_events = crm_models.EventsMeta.objects.filter(
(Q(event_type="single") & Q(repeat_start=today)) |
(Q(event_type="recurring") & Q(repeat_start__lte=today))
)
答案 1 :(得分:0)
使用它: -
today = datetime.date.today().strftime('%Y-%m-%d')
single_events = crm_models.EventsMeta.objects.filter(
event_type__in = ["single", "recurring"]
repeat_start=today
)