Django 数据库查询在 views.py 和 shell 中的行为方式不同

Django db query not behaving the same way in views.py and shell

我正在尝试生成一个查询,我在 django shell 中得到了预期的结果,但是对于同一个查询,我收到一个错误,指出模型的属性不存在。

首先是shell:

>>> from dbaccess.models import *
>>> applicantObject = Applicant.objects.get(pk=5)
>>> vol = VolInterview.objects.get(applicant=applicantObject)
>>> vol
<VolInterview: Rajon>

来自views.py

from models import *

def addIntCandidate(request):
    applicants = Applicant.objects.filter(applicationStatus="Pending")
    interviews = Interview.objects.all()
    message = []
    if request.method == 'POST':
        applicant = request.POST.get('applicant')
        ...
        # the value of applicant at this point is 5
        applicantObject = Applicant.objects.get(pk=applicant)
        prevRejected = VolInterview.objects.get(applicant=applicantObject)
        ...

错误信息:

type object 'VolInterview' has no attribute 'objects'

回溯:

E:\projects_directory\djangoprojects\kpr-admin-db\dbaccess\views.py in addIntCandidate
                    prevRejected = VolInterview.objects.get(applicant=applicantObject)

我做错了什么?

您似乎已将视图中的 VolInterview 替换为不同的 class。

要检查,您可以将 print(VolInterview) 添加到您的视图和 shell,并检查您在两者中获得的结果是否相同。

在 Django 中,通常使用 Form 作为表单的后缀 classes,例如VolInterviewForm,这样模型和表单名称就不会冲突。