簡體   English   中英

將Django表單數據保存在數據庫中

[英]Save data of django form in database

我正在使用Django 1.3,並且有一個用forms.py定義的表單:

class mopa(forms.Form):
    idcarrellosorgente = forms.IntegerField(label="Identificativo Carrello Sorgente *", required=True, max_value=9999999999, min_value=0000000000 )
    causale = forms.CharField(label="Causale Pagamento *", required=True)
    imp_unitario = forms.DecimalField(label="Importo Unitario Bene (es. 20.00) *", required=True)
    quantita_item = forms.IntegerField(label="Quantita' Bene Acquistato (intero) *", required=True)   

在這個文件中,我進行了檢查。 我的models.py文件:

class Mopamodel(models.Model):
    idcarrellosorgente = models.IntegerField()
    cod_ente = models.CharField()
    causale = models.CharField()
    imp_unitario = models.DecimalField()
    quantita_item = models.IntegerField()

和我的views.py

def paga(request):

    # If this is a POST request then process the Form data
     if request.method == 'POST':

    #  Create a form instance and populate it with data from the request (binding):
    form = mopa(request.POST)
    print('form: ', form.data) #return a dictionary

    # Check if the form is valid:
    if form.is_valid():
        # process the data in form.cleaned_data as required 
        # p=form.save() <--don't works: error: 'mopa' object has no attribute 'save'
        idcarr = form.cleaned_data['idcarrellosorgente']         
        caus = form.cleaned_data['causale']
        imp_u = form.cleaned_data['imp_unitario']
        qta = form.cleaned_data['quantita_item']

        dictmopa={}
        dictmopa['id_carr']=idcarr
        cod_ente = form.cleaned_data['cod_ente']
        mopapay=Mopamodel(idcarrellosorgente=idcarr, cod_ente=cod_ente, causale=causale, imp_unitario=imp_u, quantita_item=qta
        #mopapay.save() <--this produce the error: unsupported operand type(s) for ** or pow(): 'Decimal' and 'NoneType'
        ....
        # redirect to a new URL:
    return HttpResponseRedirect(reverse('viewsdati/') )

如何將表單數據保存在數據庫Postgres中? 其他教程/問題不能解決我的問題,可能是針對較新的Django版本。

好吧,在這種情況下,您應該使用ModelForm 更改如下形式:

class mopa(forms.ModelForm):
    class Meta:
         model = Mopamodel
         fields = ('idcarrellosorgente ', 'causale', 'imp_unitario', 'quantita_item ', )

然后將視圖更改為如下所示:

def paga(request):
    if request.method == 'POST':
        form = mopa(request.POST)
        if form.is_valid():
           posted = form.save(commit=False)
           posted.cod_ente = form.cleaned_data['cod_ente']
           posted.save()

           return HttpResponseRedirect(reverse('viewsdati/'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM