I have an Event model, and each event will have different shows. class Event(models.Model): title = models.CharField(max_length=200)
class Show(models.Model): event = models.ForeignKey(Event, on_delete=models.CASCADE) date_time = models.DateTimeField(unique=True) class Ticket(models.Model): show = models.ForeignKey(Show) seat = models.ForeignKey(Seat) class Meta: unique_together = ('show', 'seat') I need to create shows based on the start date and end date provide by the user. Suppose this is a JSON post: { "event_id": 1, "start_date": "2018-02-16", "end_date": "2018-02-20", "time_list": ["11:00 AM", "8:00 PM"] } >From the above JSON example, I need to create Show starting like this: # Start with the start_date as the date, and for each time from the time_list Show.objects.create( event = 1, date_time = datetime.strptime('2018-02-16 11:00 AM', "%Y-%m-%d %I:%M %p") ) Show.objects.create( event = 1, date_time = datetime.strptime('2018-02-16 8:00 PM', "%Y-%m-%d %I:%M %p") ) # Next date after the start_date, i.e., 16+1 = 17 Show.objects.create( event = 1, date_time = datetime.strptime('2018-02-17 8:00 PM', "%Y-%m-%d %I:%M %p") ) . . . # Create Show objects till the end_date and for each time from the time_list Show.objects.create( event = 1, date_time = datetime.strptime('2018-02-20 8:00 PM', "%Y-%m-%d %I:%M %p") ) Right now this is how I am creating Show objects: def create_show_by_datetime(self, request): event_id = request.data['event_id'] start_date = request.data['start_date'] end_date = request.data['end_date'] time_list = request.data['time_list'] format = '%Y-%m-%d' delta_days = datetime.strptime(end_date, format).date() - datetime.strptime(start_date, format).date() delta_days = delta_days.days + 1 for i in range(delta_days): day = datetime.strptime(start_date, format) + timedelta(days=i) for i in range(len(time_list)): hrs = datetime.strptime(time_list[i], "%I:%M %p").hour mins = datetime.strptime(time_list[i], "%I:%M %p").minute event = Event.objects.get(id=event_id) dt = day + timedelta(hours=hrs, minutes=mins) show = Show.objects.create( event=event, date_time=dt ) But I am really hoping there's much more elegant way than how I am doing. I am using python 3, django 2 and django rest frameowork. Could you please help me? Thank you -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/813ca752-f1e1-47d7-9ebb-a8bdb7e2ed59%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.