[软件设计/软件工程] 如何根据当前 URL 中的 ID 过滤 ListView 输出

[复制链接]
发表于 2022-5-5 09:00:48
问题
我的项目是购物清单。我有两个模型:购物清单和购物项目,如下所示:

模型.py
  1. class ShoppingItem (Model):
  2.     name = models.CharField(max_length=50, null=False)
  3.     count = models.IntegerField(null=False)
  4.     list = models.ForeignKey(ShoppingList, on_delete=models.CASCADE, related_name='shopping_items')
  5.     date_created = models.DateTimeField(auto_now_add=True)
复制代码

网址.py
  1. urlpatterns = [
  2.     path('ListDetails/<int:pk>', views.ListDetailUpdateView.as_view(), name='listdetailupdate'),
  3. ]
复制代码

视图.py
  1. class ListDetailUpdateView(ListView):
  2.     model = ShoppingItem
  3.     template_name = 'xlist_app/ListDetailUpdateView.html'
  4.     context_object_name = 'products'
  5.     queryset = ShoppingItem.objects.filter(list = XXXX)
复制代码

我需要一个返回部分 url 但在 ListView 中的函数(其中“XXXX”)

我的想法是剪掉url的最后一部分(例如,当我进入列表2时,我有地址 http://127.0.0.1:8000/ListDetails/2 )并替换“XXXX”有这样的功能。

在我看来应该是:

queryset = ShoppingItem.objects.filter(list = int(request.path.split('/')[-1])

如果有更好的方法,我会仔细考虑所有建议

回答
类似的东西
  1. class ListDetailUpdateView(ListView):
  2.     model = ShoppingItem
  3.     template_name = 'xlist_app/ListDetailUpdateView.html'
  4.     context_object_name = 'products'

  5.     def get_queryset(self):
  6.        return ShoppingItem.objects.filter(list=self.request.resolver_match.kwargs['pk'])
复制代码






上一篇:如何在本地 kubernetes 集群上设置 Jenkins-x?
下一篇:d3文本元素的读取宽度

使用道具 举报

Archiver|手机版|小黑屋|吾爱开源 |网站地图

Copyright 2011 - 2012 Lnqq.NET.All Rights Reserved( ICP备案粤ICP备14042591号-1粤ICP14042591号 )

关于本站 - 版权申明 - 侵删联系 - Ln Studio! - 广告联系

本站资源来自互联网,仅供用户测试使用,相关版权归原作者所有

快速回复 返回顶部 返回列表