jquery - django ajax form onchange select -


i have models, forms , views. need ajax form request, when room selected change room information. tried ajax doesn't work. use jquery.

<script type="text/javascript">   $(document).ready(function(){ $('#roomform').change(function() {     request_url = '/hotel/rooms-view/' + pk + '/';     $.ajax({         url: request_url,         success: function(data){             $('#id_room').html('<option selected="' + "selected" + '">' + '' +'</option>');             for(var = 1; i<=data[1]; i++)                  $('#id_room').append('<option value="' + + '">' + +'</option>');         },          errors: function(e) {             alert(e);         }     }) }) </script> 

template

<form class="form-inline reservation-horizontal clearfix" role="form" method="post" action="" name="reservationform" id="bookingform">{% csrf_token %}        <div class="row">                                      <div class="form-group room">                   <label for="room">{% trans 'room type' %}</label>                   <select class="form-control" name="room" id="room">                             <option value={{form.room}}</option>                     </select>                 </div>               <div class="form-group">                <label for="from_date">{% trans 'checkin' %}</label></div>            <input name="from_date" type="text" id="from_date" value="" class="form-control"/>             </div>         <div class="form-group">         <label for="to_date">{% trans 'checkout' %}</label>              <input name="to_date" type="text" id="to_date" value="" class="form-control"/></div>   <button type="submit" id="book" class="btn btn-primary btn-block"> book</button>          </form> 

models.py

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') 

forms.py

class bookform(forms.modelform):       from_date = forms.datefield(label='check-in')       to_date = forms.datefield(label='check-out')       adult = forms.integerfield(label='adult')       room = forms.modelchoicefield(queryset=room.objects.filter(status=true),widget=form.select(attrs={'onchange':'refresh();'}))       fname = forms.charfield(label='last name')       lname = forms.charfield(label='first name')       email = forms.emailfield(label='email')       phone = forms.integerfield(label='phone')       message = forms.textarea() 

views.py # update

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()      rooms = room.objects.get(id=pk)      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) start, end in zip(start_dates,end_dates) in range((end-start).days+1)]      c = {}     c['form'] = form     return render_to_response('rooms_detail.html',c) 

please me, in advance.

you should specify type of ajax request ... if want post request view, add after $.ajax({ type: 'post',

from django docs

class jsonresponsemixin(object):     def render_to_response(self, context):         return self.get_json_response(self.convert_context_to_json(context))      def get_json_response(self, content, **httpresponse_kwargs):         return httpresponse(             content,             content_type='application/json',         )      def convert_context_to_json(self, context):         return json.dumps(context)   class someajaxview(view, jsonresponsemixin):     model = room      @method_decorator(require_ajax)     @method_decorator(require_post)     def dispatch(self, request, *args, **kwargs):         obj_pk = request.post.get('room_pk')         self.object = get_object_or_404(self.model, pk=obj_pk)          return super(someajaxview, self).dispatch(request, *args, **kwargs)      def post(self, request, *args, **kwargs):         self.object.status = request.post.get('status')         self.object.name = request.post.get('name')          # same way can change self.object.booking             self.object.save()          context = {             'result': 'success',         }          return self.render_to_response(context) 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -