Делаю афишу
Модель такая:
class Date(models.Model): date = models.DateTimeField(u'Дата', unique=True) class Event(models.Model): user = models.ForeignKey(User, verbose_name=u'Пользователь') name = models.CharField(u'Название', max_length=100) dates = models.ManyToManyField(Date, verbose_name=u'Даты') #остальные поля
Это позволяет привязывать к событию несколько дат
Выбираю события так:
def events(request, category=None): now = datetime.datetime.now() events = Event.objects if category: category = get_object_or_404(Category, uid=category) events = events.filter(category=category) # собственно вопрос здесь: # т.к у меня many-to-many мне нужно убрать повторяющиеся события, # и оставить события которые уже проходят или только начнуться # я сделал так: events_list = [] for event in events.filter(dates__date__gte=now): if event not in events_list: events_list.append(event) events = events_list
правильно ли это или можно лучше ?