问题
我的项目是购物清单。我有两个模型:购物清单和购物项目,如下所示:
模型.py
- class ShoppingItem (Model):
- name = models.CharField(max_length=50, null=False)
- count = models.IntegerField(null=False)
- list = models.ForeignKey(ShoppingList, on_delete=models.CASCADE, related_name='shopping_items')
- date_created = models.DateTimeField(auto_now_add=True)
复制代码
网址.py
- urlpatterns = [
- path('ListDetails/<int:pk>', views.ListDetailUpdateView.as_view(), name='listdetailupdate'),
- ]
复制代码
视图.py
- class ListDetailUpdateView(ListView):
- model = ShoppingItem
- template_name = 'xlist_app/ListDetailUpdateView.html'
- context_object_name = 'products'
- 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])
如果有更好的方法,我会仔细考虑所有建议
回答
类似的东西
- class ListDetailUpdateView(ListView):
- model = ShoppingItem
- template_name = 'xlist_app/ListDetailUpdateView.html'
- context_object_name = 'products'
- def get_queryset(self):
- return ShoppingItem.objects.filter(list=self.request.resolver_match.kwargs['pk'])
复制代码
|