Python QuerySet在shell中工作,但不在Views.py-Django 1.10中工作

Python QuerySet在shell中工作,但不在Views.py-Django 1.10中工作,python,django,Python,Django,在Django shell(python manage.py shell)中执行以下查询集时: 我得到一个结果: <QuerySet [<Employee: Joyce McDonnals>]> 但这会返回错误: NameError at /restaurant/1/employees/ name 'restaurant' is not defined Request Method: GET Request URL: http://127.0.0.1:8001/r

在Django shell(
python manage.py shell
)中执行以下查询集时:

我得到一个结果:

<QuerySet [<Employee: Joyce McDonnals>]>
但这会返回错误:

NameError at /restaurant/1/employees/
name 'restaurant' is not defined
Request Method: GET
Request URL:    http://127.0.0.1:8001/restaurant/1/employees/
Django Version: 1.10.5
Exception Type: NameError
Exception Value:    
name 'restaurant' is not defined

我在my views.py中尝试了一些queryset的变体,但似乎无法使其正常工作。有人能帮我定义一下这个查询集吗

您没有提供进入get_queryset的餐厅。可能应该是这样的:

   def get_queryset(self):
        self.restaurant = get_object_or_404(Restaurant, name=self.args[0])
        return Emploee.objects.filter(pk=self.restaurant)
试试这个-

queryset = Employee.objects.filter(restaurant__pk=pk_value)
您应该在这里传递pk_值,并且餐厅字段应该是其他表的外键。您可以通过在shell中传递pk_值=1进行检查


希望这有帮助。有关更多信息,请查看django模型文档-

问题不在于queryset,而在于标准Python范围。你需要考虑餐厅的价值应该来自哪里

在您的情况下,它显然来自URL;假设您有一个类似以下内容的URL:

url(r'^restaurant/(?P<restaurant_id>\d+)/employees/$', ...)

问题不在于queryset,而在于标准Python范围。餐厅的值应该来自哪里?
餐厅
已在我的员工模型中定义为模型餐厅功能的外键,如下所示:
餐厅=models.ForeignKey(餐厅功能,on_delete=models.CASCADE)
,但这并不能回答问题;\您要筛选的具体值来自何处?谢谢您的详细回答。餐厅的价值确实来自URL。很抱歉没有添加此项。我的url正则表达式是:
url(r'^restaurant/(?P\d+)/EmployeeList.as_view(),name='restaurant\u employee')
。我添加了您的代码,但这会导致错误:
keyrorm:'restaurant'
。你能解释一下为什么这仍然不能解决我的问题吗?哦,我通过再次阅读你的答案解决了这个问题。我把
餐厅
改成了
pk
!非常感谢你!
queryset = Employee.objects.filter(restaurant__pk=pk_value)
url(r'^restaurant/(?P<restaurant_id>\d+)/employees/$', ...)
queryset = Employee.objects.filter(restaurant_id=self.kwargs['restaurant'])