2016-04-06 3 views
1

В нижеследующем представлении я препятствую созданию встречи с теми же датами и временем. Но в любом случае этот код приводит к созданию повторяющегося собрания.Django Просмотров: DoesNotExist не работает

def new_meeting_board(request): 
    if User.is_authenticated: 
     username = request.user.username 
    else: 
     return HttpResponseRedirect('/login/board/') 

    if request.method == 'POST': 
     form = new_meetingForm(request.POST) 

     now = datetime.datetime.now() 

     if form.is_valid(): 
      clash = 1 
      user = User.objects.get(username = username) 

      try: 
       meet_check = meeting.objects.get(date = form.cleaned_data['date'], time = form.cleaned_data['time']) 
      except meeting.DoesNotExist: 
       clash = 0 

      if clash == 1: 
       form = new_meetingForm() 
       variables = RequestContext(request, { 
        'username': username, 
        'form': form, 
       }) 
       return render_to_response('new_meeting_board.html', variables) 


      else: 
       mem = memo(
        snd_username = user, 
        rcv_username = form.cleaned_data['reciever'], 
        subject = 'Meeting', 
        date = str(now.year) + '-' + str(now.month) + '-' + str(now.day), 
        time = str(now.hour) + ':' + str(now.minute), 
       ) 
       mem.save() 

       mee = mem.meeting_set.create(
        snd_username = username, 
        rcv_username = mem.rcv_username, 
        status_username = '0', 
        date = form.cleaned_data['date'], 
        time = form.cleaned_data['time'], 
        venue = form.cleaned_data['venue'], 
       ) 
       mee.save() 
       return HttpResponseRedirect('/dashboard/board/' + username) 
    else: 
     form = new_meetingForm() 


    variables = RequestContext(request, { 
     'username': username, 
     'form': form, 
    }) 
    return render_to_response('new_meeting_board.html', variables) 

За исключением части блока try/except, по-видимому, не работает по какой-либо причине. Пожалуйста помоги.

+0

Вы можете отправить сообщение об ошибке, которую вы получаете, что не поймано plz. Это должно быть ловить – awwester

+0

Ошибка не возникает. Когда данные формы имеют «время» и «дату», которые являются рекуррентными, и объект собрания существует с одинаковыми данными кортежа, тогда значение столкновения должно оставаться равным 1, а блок «else» должен быть выполнен. Кажется, это не так. –

ответ

1

meeting.objects, вероятно, следует Meeting.objects

+0

Мой классный класс для встреч ** **. Таким образом ** Встреча ** не будет работать. –

1

Есть несколько переформатирования и оптимизация может быть сделана в вашем коде. Вместо того, чтобы использовать get(), вы можете использовать get_or_create для оптимизации кода. Вы можете написать код следующим образом:

def new_meeting_board(request): 
    if not request.user.is_authenticated(): # there is a mistake in your code, its not User.is_authenticated. 
     return HttpResponseRedirect('/login/board/') 

    if request.method == 'POST': 
     form = new_meetingForm(request.POST) 
     now = datetime.datetime.now() 

     if form.is_valid(): 
      user = request.user 

      meet_obj, meet_check = meeting.objects.get_or_create(
        date = form.cleaned_data['date'], 
        time = form.cleaned_data['time'], 
        subject = 'Meeting', 
        snd_username=user, 
        rcv_username = form.cleaned_data['reciever'] 
       ) 

      if meet_check is True: 
       form = new_meetingForm() 
       variables = RequestContext(request, { 
        'form': form, 
       }) 
       return render_to_response('new_meeting_board.html', variables) 

      else: 
       mee = meet_obj.meeting_set.create(
        snd_username = username, 
        rcv_username = meet_obj.rcv_username, 
        status_username = '0', 
        date = form.cleaned_data['date'], 
        time = form.cleaned_data['time'], 
        venue = form.cleaned_data['venue'], 
       ) 
       mee.save() 
       return HttpResponseRedirect('/dashboard/board/' + username) 
    else: 
     form = new_meetingForm() 


    variables = RequestContext(request, { 
     'form': form, # no need to send username, You can access it in the template by putting {{ request.user.username }} 
    }) 
    return render_to_response('new_meeting_board.html', variables) 
Смежные вопросы