1

i have two models, when i do request.POST.get('room_id') or ('id') i'm getting an error Room matching query does not exist. how to solved this problem? help me

    class Room(models.Model):
        status = models.BooleanField('Status',default=True)
        name = models.CharField('Name', max_length=100, unique=True)

    class Book(models.Model):
        date = models.DateTimeField('Created',auto_now_add=True)
        from_date = models.DateField('Check-in')
        to_date = models.DateField('Check-out')
        room = models.ForeignKey(Room, related_name='booking')

i need detail room request get id, booked dates range(from_date,to_date)

def room_detail(request,pk):
    room = get_object_or_404(Room,pk=pk)
    if request.method == 'POST':
        form = BookForm(request.POST,room=room)
        if form.is_valid():
            s = form.save(commit=True)          
            s.save()
            return redirect(request.path)
    else:
        form = BookForm()

    #roomid = Room.objects.values('id')
    type = request.POST.get('id') # or get('room_id')
    rooms = Room.objects.get(id=type)

    start_dates = rooms.booking.values_list('from_date',flat=True)
    end_dates = rooms.booking.values_list('to_date',flat=True)
    dates = [start + timedelta(days=i) for start, end in zip(start_dates,end_dates) for i in range((end-start).days+1)]

    c = {}
    c['form'] = form
    return render_to_response('rooms_detail.html',c)

please help me, thanks in advance

4
  • Do you have the exact error message and line? Commented May 28, 2015 at 21:03
  • why is your type = req...and so on not in your POST method? Commented May 28, 2015 at 21:05
  • @317070 thanks for the quick reaply, i get an error app.models.DoesNotExist: Room matching query does not exist. how to change it? Commented May 28, 2015 at 21:10
  • @RogerFederer how to do it? can view example please Commented May 28, 2015 at 21:12

3 Answers 3

5

Move your lines

#roomid = Room.objects.values('id')
type = request.POST.get('id') # or get('room_id')
rooms = Room.objects.get(id=type)

inside the post method.

if request.method == 'POST':
    form = BookForm(request.POST,room=room)
    if form.is_valid():
        #roomid = Room.objects.values('id')
        type = request.POST.get('id') # or get('room_id')
        rooms = Room.objects.get(id=type)
        s = form.save(commit=True)          
        s.save()
        return redirect(request.path)
Sign up to request clarification or add additional context in comments.

Comments

3

You are looking into request.POST, even if the request.method is not equal to 'POST'. This will not work, because when the request is not an HTTP-post, the POST-member of your request is empty.

1 Comment

For things like this you could just leave a comment.
0
if request.method == 'POST':
    form = BookForm(request.POST,room=room)
    if form.is_valid():
        type = request.POST.get('id')
        rooms = Room.objects.get(id=type)
        object = form.save(commit=True)          
        object.save()
        return redirect(request.path)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.