Django模型查询“不存在匹配查询”

时间:2018-11-05 21:04:41

标签: python django

我的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>

所以这是一个新问题。

0 个答案:

没有答案