Hello all,

I'm trying to build this following link feature in django, 
http://demo.smarttutorials.net/jquery-autocomplete/

Here by choosing serial_no and the rest of the fields name and author 
should be auto populate. Auto populate works for first inline formset and 
able to save it but when I add another inline formset auto populate is not 
working plus I'm unable to delete it or save it.

models.py
from django.db import models
class Book(models.Model):
    serial_no = models.IntegerField(max_length = 100, unique = True)
    name = models.CharField(max_length = 50)
    author = models.CharField(max_length = 50)

    def __unicode__(self):
        return self.name

class CustomerOrder(models.Model):
    name = models.CharField(max_length=256)

    def __unicode__(self):
        return self.name

class Order(models.Model):
    customer  =  models.ForeignKey(CustomerOrder)
    serial_no = models.IntegerField(max_length = 100, unique = True)
    name = models.CharField(max_length = 50)
    author = models.CharField(max_length = 50)
    quantity = models.IntegerField(max_length = 100)

    def __unicode__(self):
        return self.name


forms.py

from django import forms
from bookapp.models import CustomerOrder


class CustomerOrderForm(forms.ModelForm):
        class Meta:
                model = CustomerOrder
                exclude = ('customer',)


views.py

from django.http import HttpResponse
from django.shortcuts import render
from bookapp.models import *
from bookapp.forms import CustomerOrderForm
import json
from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.core.context_processors import csrf
from django.shortcuts import render_to_response, get_object_or_404
from django.forms.models import inlineformset_factory


def home(request):
    context =  RequestContext(request)
    OrderFormSet =   inlineformset_factory(CustomerOrder, Order  ,extra=1, 
exclude=('customer',))
    if request.method == "POST":
        customerorderform = CustomerOrderForm(request.POST)
        orderformset = OrderFormSet(request.POST)
        if customerorderform.is_valid() and orderformset.is_valid():
            a = customerorderform.save()
            orderformset.save(commit=False)
            orderformset.instance = a
            orderformset.save()
            return HttpResponse('Added')
    else:
        customerorderform = CustomerOrderForm()
        orderformset = OrderFormSet()
        for orderform in orderformset:
            orderform.fields['serial_no'].widget.attrs = {'id' : 'sno', 
'onkeydown':"myFunction()"}
            orderform.fields['name'].widget.attrs = {'id' : 'bname'}
            orderform.fields['author'].widget.attrs = {'id' : 'bauthor'}

    args = {}
    args.update(csrf(request))
    args = {'customerorderform':customerorderform, 'orderformset':orderformset}
    return render_to_response('home.html',args,context)

def fetch_serial_nos(request):
    serial_nos = map(lambda x: str(x.serial_no), Book.objects.all())
    return HttpResponse(content = json.dumps({'serial_nos': serial_nos}), 
content_type = "application/json; charset=UTF-8")

def get_entry_corresponds_to_serial_no(request):
    serial_no = request.GET['serial_no']
    try: 
        entry = Book.objects.get(serial_no=int(serial_no))
        data = {'name': entry.name, 'author': entry.author}
    except (ObjectDoesNotExist, ValueError):
        data = {'name': '', 'author': ''}
    return HttpResponse(content = json.dumps(data), content_type = 
"application/json; charset=UTF-8")


home.html

<script src="{{ STATIC_URL }}js/min.js"></script>
<script src="{{ STATIC_URL }}js/jquery.formset.js"></script>

<p>Enter S.NO</p>
<script type="text/javascript">
    $(function() {
        $(".inline.{{ orderformset.prefix }}").formset({
            prefix: "{{ orderformset.prefix }}",
        })
    })
</script>
<body>
    <div>
        <h1>Orders</h1>
        <form action="/"  method="post">{% csrf_token %}
            <div>
                <legend>Customer</legend>
                {{customerorderform}}
            </div>
           <fieldset>
                <legend>Order</legend>
                {{ orderformset.management_form }}
                {{ orderformset.non_form_errors }}
                {% for form in orderformset %}
                    {{ form.id }}
                    <div class="inline {{ orderformset.prefix }}">
                        {{form}}
                    </div>
                {% endfor %}
            </fieldset>
            <input type="submit" value="Add order" class="submit" />
        </form>
    </div>
</body>
<p id="demo"></p>


<script>
$(function(){
    $.ajax({
        type: "GET",
        url: '/serial_nos/',        
        success: function (response) {
        serial_nos = response['serial_nos'];
        $( "#sno" ).autocomplete({
            source: serial_nos
         });
        },        
    });   
    });
function myFunction(){ 
var sno = document.getElementById("sno").value;
console.log(sno)
    document.getElementById("demo").innerHTML = "You selected: " + sno;
$.ajax({
        type: "GET",
        url: '/entry/',
        data : {
        serial_no : sno,
        },        
        success: function (response) {
            console.log('success') 
        bname.value = response['name'];
        bauthor.value = response['author'];
        
        },        
    });
  }  
</script>



Thanks in advance...

-- 
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 http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/eb0a16fc-1c79-4e70-b659-5f0182e6eb59%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to