in/crms/cust/cust_popup/invalidquery/原始查询必须包括主键
发生错误。您如何处理?
请求方法:发布
请求URL:http://192.168.91.170:55555555555555555555555555555555555555555555555555555555555555555555.5555号 Django版本:1.11.1
python可执行文件:/home/sweetyxyz/dev/web/myvenv/bin/python
Python版本:3.4.3
我的源代码是.....
models.py
class Cu_00(models.Model):
cu_code = models.CharField(primary_key=True, unique=True, max_length=50)
cu_nm = models.CharField(db_index=True, max_length=100)
cu_addr = models.CharField(max_length=200,null=True)
cu_memo = models.TextField(max_length=2000,null=True)
cu_comp_yn = models.CharField(max_length=2,null=True)
cu_use_yn = models.CharField(max_length=2, null=True)
cu_del_yn = models.CharField(max_length=2, default='N' )
createDate = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.cu_nm
urls.py
....
url(r'^cust/cust_popup/$' , views_cu.isCustData, name='isCustData' ) ,
.....
views.py
def isCustData(req):
if req.method == 'POST':
cCust_nm = req.POST['cust_nm']
else:
cCust_nm = req.GET.get['cust_nm']
cCust_nm = '%'+cCust_nm+'%'
cDel_yn = 'N'
cQuery = "select exists( select * from crmtotal_cu_00 where cu_nm like %s and cu_del_yn = %s )"
events = Cu_00.objects.raw(cQuery, [cCust_nm, cDel_yn])
context = {}
events = serializers.serialize('json', events)
context['is_taken'] = events
return JsonResponse(data=serializers.serialize('json', events))
html源代码
....
<script>
$("#cust_nm").change(function(){
var cust_nm = $("#cust_nm").val() ;
console.log(cust_nm) ;
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
$.ajax({
url: "{% url 'isCustData' %}",
type : 'POST' ,
data: {
'cust_nm': cust_nm
},
dataType: 'json',
success: function (data) {
if (data.is_taken) {
alert("Cust Name is Found");
}
}
});
})
</script>
在调用raw()
中使用该查询是没有意义的。
cQuery = "select exists(
select * from crmtotal_cu_00 where cu_nm like %s and cu_del_yn = %s
)"
您在此处选择一个true/false,raw()
应该如何将其转换为对象实例的峰值?
您可以使用Django的ORM重新创建查询,而无需直接使用SQL。
如果您从代码中删除此行:
cCust_nm = '%'+cCust_nm+'%'
那么,这应该给您想要的东西:
Cu_00.objects.filter(cu_nm__contains=cCust_nm, cu_del_yn='N').exists()
取决于cu_nm
包含的内容以及您要选择的内容,您可能需要使用__icontains
而不是__contains
。请参阅此处的文档
.exists()
返回布尔值,因此您可能需要调整序列化器来考虑。