Jquery Django视图数据库值保留为“\”\
我对web开发相当陌生,被要求使用Django和Ajax编写一份调查报告。我在更新数据库中的值时遇到了一些麻烦。如图所示 我的SQL值始终为空,即使有打印的值RxCx是它从request.POST.get获得的值 Models.pyJquery Django视图数据库值保留为“\”\,jquery,sql,ajax,django,forms,Jquery,Sql,Ajax,Django,Forms,我对web开发相当陌生,被要求使用Django和Ajax编写一份调查报告。我在更新数据库中的值时遇到了一些麻烦。如图所示 我的SQL值始终为空,即使有打印的值RxCx是它从request.POST.get获得的值 Models.py class Office(models.Model): Office_Space = ( ('R1B1', 'R1B1'), ('R2B1', 'R2B1'), ('R3B1', 'R3B1'),
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',]
视图中的函数编写得很糟糕,但如果我以其他方式执行该函数,表单最终将无效
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})
提前感谢。您没有向表单传递任何数据!,这就是为什么它是空的。为了工作,将响应数据指令传递给表单,如下所示:
form = Office(response_data)
更正:上面这一行仍然不起作用,因为Office是模型,您需要声明为form_类的表单。所以
或者更好的方法是,删除form_class=officeForm行,然后只写:
form = officeForm(response_data)
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})
如果以下任何答案有助于您解决问题,请将其中一个标记为正确。这是StackOverflow的一个很好的实践:谢谢!所以我尝试了这个函数;但是,表单_类不是每次单击一个单选按钮时都有效的,因为其余的没有填写。但是每次用户单击单选按钮时,我都需要某种更新。我如何才能避免“有效”为假?
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})