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 [email protected].
To post to this group, send email to [email protected].
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