Python Django:使用来自模板的ajax调用更新模型字段

Python Django:使用来自模板的ajax调用更新模型字段,python,ajax,django,Python,Ajax,Django,我有一个模型: class ok(models.Model): name = models.CharField(max_length=255) project = models.CharField(max_length=255) story = models.CharField(max_length=500) depends_on = models.CharField(max_length=500, default='') rfc = models.Cha

我有一个模型:

class ok(models.Model):
    name = models.CharField(max_length=255)
    project = models.CharField(max_length=255)
    story = models.CharField(max_length=500)
    depends_on = models.CharField(max_length=500, default='')
    rfc = models.CharField(max_length=255)
我有模型表格

class okForm(ModelForm):
     class Meta:
     model = ok
     fields='__all__'
我得到了前3个字段:名称、项目、故事用户手册输入。现在,我想使用AJAX调用from views函数来填充第三个字段的最后两个字段,该函数将查询mysql数据库。 我在视图中有一个功能

def get(self, request):
    name = request.GET.get('name')
    project = request.GET.get('project')
    story = request.GET.get('story')
    if name and project and story:
        try:
            obj = ok.objects.get(name=name, project=project, story=story)
            return JsonResponse(data={
                'depends_on': ok_obj.depends_on,
                'rfc': ok_obj.rfc}, status=200)
        except ok.DoesNotExist:
             pass
    return JsonResponse(data={'error': 'bad request'}, status=400) 
我将如何使用用户刚刚填写的第三个值进行ajax调用,因为他还没有提交表单


请帮忙。

如果我正确理解了您的问题,请在您的模板中-

<input type="text" onkeyup="get_value()" name="third_value" />

<script>
    function get_value(){
      var val=document.getElementsByName("third_value")[0].value;
      var xhr=new XMLHttpRequest();
      xhr.open("GET","get_value_url?value="+val,true);
      xhr.onreadystatechange=function(){
         if(xhr.readyState == 4 && xhr.status == 200){
            var res=JSON.parse(xhr.responseText);
            // do something with this response like autofill
         }
      }
      xhr.send(null);
}
</script>
当然,您希望在模板中设置一些超时,这样它就不会在用户每次按下按钮时进行查询


希望这有帮助。

如果我正确理解了您的问题,请在模板中执行-

<input type="text" onkeyup="get_value()" name="third_value" />

<script>
    function get_value(){
      var val=document.getElementsByName("third_value")[0].value;
      var xhr=new XMLHttpRequest();
      xhr.open("GET","get_value_url?value="+val,true);
      xhr.onreadystatechange=function(){
         if(xhr.readyState == 4 && xhr.status == 200){
            var res=JSON.parse(xhr.responseText);
            // do something with this response like autofill
         }
      }
      xhr.send(null);
}
</script>
当然,您希望在模板中设置一些超时,这样它就不会在用户每次按下按钮时进行查询



希望这能有所帮助。

您能详细说明您的实际需求吗?从视图调用ajax是什么意思?我需要对“get”函数进行ajax调用,并将第三个字段“story”作为输入,这样我就可以使用它进行mysql查询您的意思是从模板到视图的ajax调用。对吗?我想你已经在你现有的代码中完成了。你能详细说明你的实际需求吗?你说的来自视图的ajax调用是什么意思?我需要对“get”函数进行ajax调用,将第三个字段“story”作为输入,这样我就可以用它进行mysql查询了。你是说从模板到视图的ajax调用。对吗?我想你已经在你现有的代码中做到了。现在我看到了以下错误::raise MultiValueDictKeyError(repr(key))MultiValueDictKeyError:“u'third_value'”跟随编辑过的帖子。实际上,存储值的变量是
value
。仍然得到相同的错误:val=request.GET[“value”]File”/usr/lib64/python2.7/site packages/django/utils/datastructures.py”,在getitem raise MultiValueDictKeyError(repr(key))的第85行MultiValueDictKeyError:“u'value'”你能把
请求的值发布出来吗?在这里打印出来吗?现在我得到了以下错误::raise MultiValueDictKeyError(repr(key))MultiValueDictKeyError:“u'third_value'”跟随编辑过的帖子。实际上,存储值的变量是
value
。仍然得到相同的错误:val=request.GET[“value”]File”/usr/lib64/python2.7/site packages/django/utils/datastructures.py”,在getitem raise MultiValueDictKeyError(repr(key))的第85行MultiValueDictKeyError:“u'value'”您能不能只发布
请求的值。通过打印它来获取