簡體   English   中英

Django:無法將表單數據保存到數據庫

[英]Django:Unable to save form data to database

我有一個用於注冊用戶的多步驟表單/向導。 但是,我無法保存數據。 我在整個代碼中給出了各種打印命令,以調試運行時發生的情況。 打印語句顯示一切似乎都正常。 但是,我是用空值在數據庫中創建的空對象。 下面是代碼片段:

views.py

from django.shortcuts import render, render_to_response
from .models import User, Password, PersonalDetails, CCDetails, RoundUpDetails, construct_instance
#from .models import User
from .forms import PostForm
from formtools.wizard.views import SessionWizardView
from django.core.mail import send_mail

class ContactWizard(SessionWizardView):
    template_name = 'Done.html'

    def done(self, form_list, form_dict, **kwargs):

        form_data = process_form_data(form_list)

        return render('home.html', {form_data: 'form_data'})

def process_form_data(form_list):
    form_data = [form.cleaned_data for form in form_list]
    data = [User, Password, PersonalDetails, CCDetails, RoundUpDetails]
    for i, x in enumerate(form_data):
        print("value of x: ", x)
        inst = data[i]
        newObject = inst()
        print ("BnewObject", newObject)

        for k, v in x.items():
            print("value of key: ", k)
            print("value of value: ", v)
            newObject.k = v
            print("newObject.k:", newObject.k)

        newObject.save()

        print("AnewObject", newObject)

輸出:

value of x:  {'email': 'as@gmail.com'}
BnewObject User object ()
value of key:  email
value of value:  as@gmail.com
newObject.k: as@gmail.com
AnewObject User object ()
value of x:  {'user': 'po', 'password': 'po', 'confirmPassword': 'po'}
BnewObject Password object (None)
value of key:  user
value of value:  po
newObject.k: po
value of key:  password
value of value:  po
newObject.k: po
value of key:  confirmPassword
value of value:  po
newObject.k: po
AnewObject Password object (12)
value of x:  {'firstName': 'hjh', 'lastName': 'jhjhjh', 'phone': 'ghgjg', 'address': 'ggjj'}
BnewObject PersonalDetails object (None)
value of key:  firstName
value of value:  hjh
newObject.k: hjh
value of key:  lastName
value of value:  jhjhjh
newObject.k: jhjhjh
value of key:  phone
value of value:  ghgjg
newObject.k: ghgjg
value of key:  address
value of value:  ggjj
newObject.k: ggjj
AnewObject PersonalDetails object (12)
value of x:  {'ccNum': '4386280056785678', 'month': datetime.date(2018, 8, 31), 'cvvNum': '123'}
BnewObject CCDetails object (None)
value of key:  ccNum
value of value:  4386280056785678
newObject.k: 4386280056785678
value of key:  month
value of value:  2018-08-31
newObject.k: 2018-08-31
value of key:  cvvNum
value of value:  123
newObject.k: 123
AnewObject CCDetails object (12)
value of x:  {'cause': 'education', 'charity': 'a', 'zipCode': 'hghg'}
BnewObject RoundUpDetails object (None)
value of key:  cause
value of value:  education
newObject.k: education
value of key:  charity
value of value:  a
newObject.k: a
value of key:  zipCode
value of value:  hghg
newObject.k: hghg
AnewObject RoundUpDetails object (12)

如您所見,輸出顯示已創建對象並分配了正確的值。 但是,我看不到它們保存在數據庫中。 請幫忙!

PS:我正在使用MySql數據庫。

嘗試使用setattr(newObject, k, v)而不是newObject.k = v ,因為使用點表示法將屬性k(不是基礎字符串值)分配給newObject。 要以這種方式設置屬性,應使用getattr(newObject, k)而不是newObject.k

暫無
暫無

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

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