这让我很困惑
我想制作重复事件,所以我决定使用Django的RecurrenceField,然后意识到没有办法在字段上进行过滤。为了得到即将到来的事件,我必须做很多查询,而不是仅仅是一个最小的,这让我发疯。下面是我起草的用于获取即将到来的事件的函数(该函数不起作用)
def get_future_events():
future_events = None
non_recurring_today_events = Events.objects.filter(is_deleted=False, status='Live', event_date=timezone.now().date(), event_time__gt=datetime.now(), recurrences__isnull=True).annotate(next_date=F('event_date')).order_by('event_date', 'event_time')
non_recurring_future_events = Events.objects.filter(is_deleted=False, status='Live', event_date__gt=timezone.now().date(), recurrences__isnull=True).order_by('event_date', 'event_time')
future_events = non_recurring_today_events | non_recurring_future_events
recurring_events_ids_for_future = list()
recurring_events_dates = dict()
recurring_events = Events.objects.filter(is_deleted=False, status='Live', event_time__gt=datetime.now(), recurrences__isnull=False).order_by('event_time');
for event in recurring_events:
if(event.recurrences.count(dtstart=datetime.now()) > 0):
recurring_events_ids_for_future.append(event.event_id)
recurring_events_dates[event.pk] = event.recurrences.after(datetime.now(),inc=True)
# This line gives the error:
recurring_events_for_future = Events.objects.filter(is_deleted=False,event_id__in=recurring_events_ids_for_future).annotate(next_date=recurring_events_ids_for_future[F('pk')]).order_by('next_date', 'event_time')
future_events = future_events | recurring_events_for_future
future_events = future_events.order_by('next_date', 'event_time')
return future_events
我以为我可以走了,但后来我犯了一个错误:
list indices must be integers or slices, not F
如果有人有其他想法,请帮助我。先谢谢你
以下是事件模型中的重要字段:
class Events(models.Model):
event_id = models.BigAutoField(primary_key=True)
event_date = models.DateField(null=True)
event_time = models.TimeField(null=True)
TYPE = (('Live', 'Live'), ('Archived', 'Archived'))
status = models.CharField(choices=TYPE, max_length=50, default='Live')
recurrences = RecurrenceField(null=True, blank=True)
is_deleted = models.BooleanField(default=False)
注意:非经常性事件的RecurrenceField为None/null
目前没有回答
相关问题 更多 >
编程相关推荐