我的django应用程序上出现“不存在匹配查询”的问题,我感到困惑。我知道这意味着它找不到与我的查询匹配的内容,但是如下所示,我可以通过sql在表上手动运行查询。我不确定还有什么地方可以看。 (我只提供了view.py和model.py文件的片段,因为其中的其他功能无关紧要。)
我正在查询,但在第一个查询上失败。第一个查询是results = RateskioskEmp.objects.get(BadgeBarcodeID=barcodeid)
,第二个查询是context['result_obj'] = RateskioskMain.objects.get(EID=empid)
如果我提供了一个手动“ empid”并跳过了第一个RateskioskEmp查询,那么它可以正常工作,并且我从RateskioskMain查询中得到了结果。
错误:
Exception Type: DoesNotExist at /kiosk
Exception Value: RateskioskEmp matching query does not exist.
观看次数:
from ratekiosk.models import RateskioskMain
from ratekiosk.models import RateskioskEmp #this is the problem model
def get_emp_by_barcode_db(barcodeid):
results = RateskioskEmp.objects.get(BadgeBarcodeID=barcodeid)
empid = results.EID
return empid
def kiosk_view(request):
context = dict()
if request.method == 'POST':
barcodeid = request.POST.get('barcodeid')
empid = get_emp_by_barcode_db(barcodeid)
try:
context['result_obj'] = RateskioskMain.objects.get(EID=empid)
except Exception:
context['result_obj'] = None
return render(request, 'ratekiosk/kiosk.html', context)
型号:
class RateskioskEmp(models.Model):
EID = models.BigIntegerField(unique=True, default=0,)
UserID = models.CharField(max_length=100, blank=True, default=0)
EmployeeName = models.CharField(max_length=100, blank=True, default=0)
BadgeBarcodeID = models.CharField(max_length=100, blank=True, default=0)
DepartmentID = models.CharField(max_length=100, blank=True, default=0)
手动SQL查询:
mysql> select eid from ratekiosk_rateskioskemp where badgebarcodeID='123456789';
+-----------+
| eid |
+-----------+
| 987654321 |
+-----------+
1 row in set (0.00 sec)
mysql>
有人对我想念的东西有任何想法吗?任何帮助表示赞赏。
更新:似乎我的表单没有将表单中的值返回给视图。当时只有一点,但现在我什么也没得到。
模板:
<div class="row vertical-center-row">
<form action="" method="post">
{% csrf_token %}
<div class="form-group">
<label for="barcodeid">Scan Your Badge</label>
<input type="text" id="barcodeid" name="barcodeid" class="form-control" required>
</div>
<input type="submit" value="Submit" class="btn btn-primary">
</form>
</div></div>
所以这是一个新问题。