p上的Django get_queryset过滤器对象

2024-05-15 05:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这些模型客户进度。 我混合了Create和ListView,但是我只想显示当前客户机的进度数据。我用一个硬编码的PK完成了这一点,但是当我试图动态地实现它时,我只会遇到如下错误

Field 'id' expected a number but got <property object at 0x10ee5f890>.

在模型.py在

^{pr2}$

在视图.py在

^{3}$

在网址.py在


urlpatterns = [
   path('clients/progress/<slug:slug>/<int:pk>', login_required(views.ProgressClient.as_view(), login_url='/login'), name="progress_clients"),
]

我试过像

def get_context_data(self, **kwargs):
    kwargs['object_list'] = Progress.objects.filter(client__id=Client.pk)
    return super(ProgressClient, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs):
    client_pk = self.kwargs.get('client_id')
    kwargs['object_list'] = Progress.objects.filter(client__id=client_pk)
    return super(ProgressClient, self).get_context_data(**kwargs)

Tags: py模型selfclientiddatagetobject
1条回答
网友
1楼 · 发布于 2024-05-15 05:22:41

这个主键是路径的一个参数。您可以使用self.kwargs访问这些文件,因此可以使用以下内容进行筛选:

class ProgressClient(generic.CreateView):
    template_name = 'pages/clients/progress/index.html'
    model = Progress
    form_class = ProgressForm
    success_url = reverse_lazy('index')

    def get_context_data(self, **kwargs):
        kwargs['object_list'] = Progress.objects.filter(client_id=self.kwargs['pk'])
        return super(ProgressClient, self).get_context_data(**kwargs)

相关问题 更多 >

    热门问题