Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 607383
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T17:21:15+00:00 2026-05-13T17:21:15+00:00

I am trying to implement a calendar system with the ability to schedule other

  • 0

I am trying to implement a calendar system with the ability to schedule other people for appointments. The system has to be able to prevent scheduling a person during another appointment or during their unavailable time.

I have looked at all the existing django calendar projects I have found on the internet and none of them seem to have this built-into them (if I missed it somehow, please let me know).

Perhaps I am just getting too tired, but the only way I can think of doing this seems a little messy. Here goes in pseudo code:

  • when a user tries to create a new appointment, grab the new appointment’s start_time and end_time
  • for each appointment on that same day, check if
    • existing_start_time < new_start_time AND existing_end_time > new_start_time (is the new appointments start time in between any existing appointment’s start and end times)
    • existing_start_time < new_end_time AND existing_end_time > new_end_time (is the new appointments end time in between any existing appointment’s start and end times)
  • if no objects were found, then go ahead and add the new appointment

Considering Django has no filtering based on time, this must all be done using .extra() on the queryset.

So, I am asking if there is a better way. A pythonic trick or module or anything that might simplify this. Or an existing project that has what I need or can lead me in the right direction.

Thanks.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T17:21:15+00:00Added an answer on May 13, 2026 at 5:21 pm

    What about using Django’s range test.

    For example:

    appoinment = Appointment()
    appointment.start_time = datetime.datetime.now()
    # 1 hour appointment
    appointment.end_time = appointment.start_time + datetime.timedelta(hours=1)
    # more stuff here
    appointment.save()
    
    # Checking for collision
    # where the start time for an appointment is between the the start and end times
    # You would want to filter this on user, etc 
    # There is also a problem if you book an appointment within another appointment
    start_conflict = Appointment.objects.filter(
                         start_time__range=(appointment.start_time,
                                            appointment.end_time))
    end_conflict = Appointment.objects.filter(
                       end_time__range=(appointment.start_time,
                                        appointment.end_time))
    
    during_conflict = Appointment.objects.filter(
                          start_date__lte=appointment.start_time, 
                          end_date__gte=appointment.end_time)
    
    if (start_conflict or end_conflict or during_conflict):
        # reject, for there is a conflict
    

    Something like that? I haven’t tried this myself so you may have to tweak it a bit.

    EDIT: Added the during_conflict bit.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to implement a view similar to that of Apple's calendar application's
Trying to implement a rating system of users and postings. What is the best
im trying to implement a custom error page, what i want to be able
I'm trying to implement a event calendar using jquery-ui's datepicker. I've successfully installed the
I am currently trying to implement the wonderful jQuery plugin 'week calendar' ( here
This one has me pulling my hair out. I'm trying to implement a very
I'm trying to implement logging system into OSGI bundle. This is the bundle activator:
I've been trying to implement a SpreadSheet client based on the calendar example. I
I am trying to implement jquery full calendar with json event updates. I have
I am trying to implement finding and selecting events in calendar on Android Application.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.