2017-08-03 64 views
0

我對web-dev非常陌生,並被要求使用Django和Ajax編寫調查。我在獲取數據庫中的值時遇到了一些麻煩。如圖所示Django視圖數據庫值仍爲''

this screenshot of CMD

我的SQL值是即使存在的價值始終打印空白(該RxCx是從request.POST.get得到的值)

Models.py

class Office(models.Model): 
    Office_Space = (
     ('R1B1', 'R1B1'), 
     ('R2B1', 'R2B1'), 
     ('R3B1', 'R3B1'), 
     ('R1B2', 'R1B2'), 
     ('R2B2', 'R2B2'), 
     ('R3B2', 'R3B2'), 
     ('R1B3', 'R1B3'), 
     ('R2B3', 'R2B3'), 
     ('R3B3', 'R3B3') 
    ) 
    space = models.CharField(max_length=4, choices=Office_Space) 

Forms.py

from django import forms 
from Survey.models import Office 

class officeForm(forms.ModelForm): 
    class Meta: 
     model = Office 
     fields = ['space',] 

在視圖中的函數(視圖很差wr但如果我這樣做其他方式的形式最終是無效的...)

def get_Office(request): 
    form_class = officeForm 

    if request.method == 'POST': 
     space = request.POST.get('result') 
     response_data = {}  
     print(space) # here is the RxCx printed for debugging 
     response_data['space'] = space 
     form = Office() 
     form.save() 
     print (connection.queries) #the SQL log   
     return JsonResponse(response_data) 
    else: 
     form = officeForm() 
    return render(request, 'Front.html', {'officeform': form}) 

在此先感謝。

+0

如果任何回答以下問題的幫你解決您的問題,請標記爲正確的。在StackOverflow中這是一個很好的練習:) –

回答

1

你沒有通過form任何數據(!),這就是爲什麼它是空的。爲了工作,傳遞給formresponse_data字典。就像這樣:

form = Office(response_data) 

更正:上面一行將仍然無法工作,因爲Office是模型,你需要你已經聲明爲form_class形式。所以,

form = form_class(response_data) 

甚至更​​好,去掉form_class = officeForm線,只是寫:

form = officeForm(response_data) 
+0

非常感謝!它現在有效。 –

0

view.py

def get_Office(request): 
    form_class = officeForm(request.POST or None) 

    if request.method == 'POST': 
     if form_class.is_valid(): 
      space = request.POST.get('result') 
      response_data = {}  
      print(space) # here is the RxCx printed for debugging 
      response_data['space'] = space 
      form_class.save() 
      print (connection.queries) #the SQL log   
      return JsonResponse(response_data) 

    return render(request, 'Front.html', {'officeform': form_class}) 
+0

謝謝!所以我嘗試過這個功能;然而,每次單擊一個單選按鈕時,form_class都是無效的(因爲其餘部分未被填充)。但每次用戶點擊一個單選按鈕時,我都需要進行一些更新。我怎樣才能避免is_valid爲假? –