我有一个模特:
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个字段:名称,项目,故事用户手册输入。现在我想使用来自查询到mysql数据库的views函数的AJAX调用来填充关于第三个字段的最后两个字段。 我在views.py
中有一个功能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调用,因为他尚未提交表单。
请帮助。
答案 0 :(得分:0)
如果我理解您的问题,请在模板中执行 -
<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>
您的视图与您已有的视图类似。喜欢 -
def get(request):
val = request.GET["value"]
# query your db and prepare response data
return JsonResponse(response)
当然,您需要在模板中设置一些超时,以便每次用户按下按钮时都不会查询。
希望这有帮助。