Guessing this is old news, but there are 2 problems with views:

ProductoConcepto.objects.create(producto=producto, orden=orden, 
cantidad=cantidad)

- producto and orden need to be Python objects and cantidad is a float, but 
the request.POST values will be string representations. 

Also the ajax post doesn't involve the forms API, so no 'if form.is_valid()'

You'd need to do something like this:

        if request.method == 'POST':

            producto = Producto.objects.get(name=request.POST['producto'])
            orden = etc.
            cantidad = float(etc)

            ProductoConcepto.objects.create(producto=producto, orden=orden, 
cantidad=cantidad)



On Saturday, July 16, 2016 at 12:49:00 AM UTC+1, Elros Romeo wrote:
>
> Hi, i hope you can help me, im trying to make a django post form without 
> reloading the page using ajax, but im getting error 500 when submit, can 
> you help me to fix this, this is my code:
>
> *models.py*
>
> class ProductoConcepto(models.Model):
> producto = models.ForeignKey(Producto)
> orden = models.ForeignKey(Cobro)
> cantidad = models.FloatField()
>
>
> *urls.py*
>
> from django.conf.urls import patterns, include, url
> from django.contrib import admin
> from cobro import views
>
> urlpatterns = [
>     url(r'^cobro/agregar_concepto/$', views.addconcept_product, 
> name='add_concepto'),
> ]
>
> *views.py*
>
>
> def addconcept_product(request):
>
>     if request.method == 'POST':
>
>         if form.is_valid():
>             producto = request.POST['producto']
>             orden = request.POST['orden']
>             cantidad = request.POST['cantidad']
>
>             ProductoConcepto.objects.create(producto=producto, 
> orden=orden, cantidad=cantidad)
>
>             return HttpResponse('')
>
> *template*
>
>         <div class="modal inmodal fade" id="myModal1" tabindex="-1" 
> role="dialog"  aria-hidden="true">
>             <div class="modal-dialog modal-m">
>                 <div class="modal-content">
>                     <div class="modal-header">
>                         <button type="button" class="close" 
> data-dismiss="modal">
>                             <span aria-hidden="true">&times;</span>
>                             <span class="sr-only">Cerrar</span>
>                         </button>
>                         <h3 class="modal-title">Agregar nuevo concepto</h3>
>                     </div>
>                     <div class="modal-body">
>                         <p>Datos de concepto a agregar:</p>
>                         <div class="doctorformstyle">
>                         <form id='formulario-modal' method='post' 
> enctype='multipart/form-data'>
>                             {% csrf_token %}
>                             <ul>{{form2.as_p}}</ul>
>
> <!--  rendered form2 fields: <select id="id_producto" 
> name="producto"><option value="1" 
> selected="selected">object</option></select> -->
> <!--  form2 fields: <select id="id_orden" name="orden">
> <option value="1" selected="selected">object</option>
> </select> -->
> <!--  form2 fields: <input id="id_cantidad" name="cantidad" step="any" 
> type="number"> -->
>
>                             <div class="row align-center">
>                                 <input type='submit' name="save1" 
> value='Guardar' class="btn btn-w-m btn-primary"/>
>                             </div>
>
>                         </form>
> </div>
>                     </div>
>                 </div>
>             </div>
>         </div>
>
> <script type="text/javascript">
>     $(document).on('submit', '#formulario-modal', function(e){
>             e.preventDefault();
>             $.ajax ({
>                 type: 'POST',
>                 url: '{% url 'add_concepto' %}',
>                 data: {
>                     producto: $('#id_producto').val(),
>                     orden: $('#id_orden').val(),
>                     cantidad: $('#id_cantidad').val(),
>                     csrfmiddlewaretoken: '{{ csrf_token }}',
>                 },
>                 sucess:function(){
>                     alert("OK");
>                 }
>             })
>     });
>
> </script>
>
> this is the error:  POST http://127.0.0.1:8000/cobro/agregar_concepto/ 
> 500 (Internal Server Error)
>

-- 
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/fb076bd7-dd4d-4881-8b84-46a6cf59cb62%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to