[英]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.