gpt4 book ai didi

python - Django:重写 get_queryset() 时如何注入(inject)数据?

转载 作者:行者123 更新时间:2023-12-01 04:36:44 24 4
gpt4 key购买 nike

非常了解基于 Django 类的 View 。我有一个运行良好但显示所有对象的 ListView。我想过滤这个,这里是我所做的,下面是一些发现的例子:

models.py:

class FolderElement(TimeStampedModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL)

class FolderMedia(TimeStampedModel):
folder_element = models.ForeignKey(FolderElement)
file = models.FileField(upload_to=generate_filepath_folder)
slug = models.SlugField(max_length=50, blank=True)

views.py:

class FolderMediaListView(ListView):
model = FolderMedia
template_name = "book.html"

def get_queryset(self):
self.folder_element = get_object_or_404(FolderElement,
pk=self.kwargs['pk'])
return FolderMedia.filter(folder_element=self.folder_element)

def render_to_response(self, context, **response_kwargs):
files = [ serialize(p) for p in self.get_queryset() ]
data = {'files': files}
response = JSONResponse(data, mimetype=response_mimetype(self.request))
response['Content-Disposition'] = 'inline; filename=files.json'
return response

但是现在我重写了 get_queryset() 方法,我不明白应该如何将 pk 参数注入(inject) View 以便过滤器工作。目前,使用 pdb,我可以在 get_queryset() 方法中看到 self.kwargs 等于 {}

谢谢。

最佳答案

Django URL 调度程序传递给 View 的关键字参数 (kwargs) 来自以下内容:

  • 捕获 URL 表达式中的参数
  • URL 定义中指定的其他参数

所有这些都在 urls.py 中。

例如,为了从 URL 中获取 ID,格式为:/folder/id/:

url(r'folder/(?P<pk>\d+)/', FolderMediaListView.as_view)

或者,如果 id 是常量(较少见),您可以将其作为附加参数传递:

url(r'folder/', FolderMediaListView.as_view, {'pk': 1})

有关该主题的更多信息,请参阅 Django documentation .

关于python - Django:重写 get_queryset() 时如何注入(inject)数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31585338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com