model.py
class Expense(models.Model): date = models.DateTimeField(verbose_name=u'Дата', default=timezone.now) expense = models.IntegerField(verbose_name=u'Расход') goods = models.ForeignKey('Goods', verbose_name=(u'Товар'), related_name='expense') def __unicode__(self): return u'%s'%(self.expense) class Meta: verbose_name_plural = "Расход" ordering=['date'] from django.forms import ModelForm from expense.models import * class ExpenseForm(ModelForm): class Meta: model=Expense
{%extends "start.html"%} {%block title%}Товар{%endblock%} {%load staticfiles%} {%load goods_extras%} {%load i18n%} {%block content%} <script type="text/javascript"> $(document).ready(function() { $("#test").submit(function(event){ event.preventDefault(); var form_data=$("#test").serializeArray; $.ajax({ type:"POST", url:"/test/", data:form_data }); }); return false; }); </script> <form id="test" method="post" action="{{action}}" >{% csrf_token %} <table> {{form}} </table> <input type="submit" value="Добавить" /> </form> {%endblock%}
<script type=“text/javascript” src=“/static/js/jquery-2.0.2.min.js”>.
Нужно при нажатии кнопки “Добавить” ,без перезагрузки страницы, данные передавались во views с помощью ajax.
url.py url(r'^test/$', start) views.py def start(request): expense_list = Expense.objects.all() action="/test/" if request.method=='POST' and request.is_ajax(): form=ExpenseForm(request.POST) if form.is_valid(): e=form.save() data = serializers.serialize('json', [e,]) return HttpResponse(data, mimetype='application/json') else: form=ExpenseForm() return render_to_response( 'start.html',locals(), context_instance=RequestContext(request))