小编Kai*_*ara的帖子

Django:如何基于两个模型保存formset

我很难将一个formset保存到数据库中.我有两个模型,一个有一个ForeignKey到另一个(我在Django管理页面中为Balanta模型做了一些条目):

models.py

    class Balanta(models.Model):
    data=models.DateField()

    class Meta:
        ordering=['data']
        verbose_name_plural="Balante"

    def __unicode__(self):
        return unicode(self.data)


class Conturi(models.Model):
    cont=models.PositiveIntegerField()
    cont_debit=models.DecimalField(default=0, max_digits=30, decimal_places=2)
    cont_credit=models.DecimalField(default=0, max_digits=30, decimal_places=2)
    balanta=models.ForeignKey(Balanta)

    class Meta:
        #ordering=['cont']
        verbose_name_plural="Conturi"

    def __unicode__(self):
        return unicode(self.cont)
Run Code Online (Sandbox Code Playgroud)

接下来我做了一个forms.py:

from sitfin.models import Conturi, Balanta
from django.forms import ModelForm

class BalantaForm(ModelForm):
    class Meta:
        model=Balanta

class ConturiForm(ModelForm):
    class Meta:
        model=Conturi
Run Code Online (Sandbox Code Playgroud)

views.py:

from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from sitfin.models import Balanta, Conturi
from sitfin.forms import BalantaForm, ConturiForm
from …
Run Code Online (Sandbox Code Playgroud)

python django formset

5
推荐指数
1
解决办法
5602
查看次数

Django:在尝试了大量修复后仍然出现CSRF错误

我收到"CSRF令牌丢失或不正确".

我已经检查了Stack Overflow的答案,但没有任何效果; 我仔细检查了我的消息来源,真的不知道我做错了什么.它仅在我评论该MIDDLEWARE_CLASSES行时才有效CsrfViewMiddleware,但我认为这是我永远不需要做的事情.

以下是我认为相关的代码片段:

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.csrf.CsrfResponseMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

views.py

from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from sitfin.models import Balanta, Conturi, BalantaForm, ConturiForm
from django.forms.formsets import formset_factory

def render_to_response(req,*args,**kwargs):
    kwargs['context_instance']=RequestContext(req)
    return render_to_response(*args,**kwargs)

def conturi_index(request):
    return render_to_response('sitfin/conturi_index.html',{'conturi_list':Conturi.objects.all()})

def conturi_introducere(request):
    ConturiFormSet=formset_factory(ConturiForm)
    if request.method=='POST':
        #form=ConturiForm(data=request.POST)
        formset=ConturiFormSet(request.POST, request.FILES)
        #if form.is_valid():
        if formset.is_valid():
            #new_entry=form.save()
            new_entry=formset.save()
            return HttpResponseRedirect("sitfin/conturiok")
    else:
        #form=ConturiForm()
        formset=ConturiFormSet()
    #return render_to_response('sitfin/conturi_introducere.html',{'form':form})
    return render_to_response('sitfin/conturi_introducere.html',{'formset':formset})
Run Code Online (Sandbox Code Playgroud)

模板

<html>
<head> …
Run Code Online (Sandbox Code Playgroud)

python django csrf

1
推荐指数
1
解决办法
1080
查看次数

标签 统计

django ×2

python ×2

csrf ×1

formset ×1