Jquery Django视图数据库值保留为“\”\

Jquery 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'),

我对web开发相当陌生,被要求使用Django和Ajax编写一份调查报告。我在更新数据库中的值时遇到了一些麻烦。如图所示

我的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',]
视图中的函数编写得很糟糕,但如果我以其他方式执行该函数,表单最终将无效

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})