猿问

Django:在通用视图中选择模型的下拉菜单

我有一个通用的 Django 泛型DetailView,我希望能够通过django.form. 选项是属于用户的对象列表。我可以Model.objects.all()对表单中的所有对象执行此操作,但是如何过滤掉属于用户的选项而无法request.user从表单访问?


我看过一个可以将查询集注入表单的示例:


form = MyForm()

form['field'].queryset = Model.objects.filter(user=user)

但是在 django 通用视图中没有地方可以真正做到这一点(有吗?)


小唯快跑啊
浏览 93回答 1
1回答

鸿蒙传说

您可以在 a 中执行相同的技巧DetailView,或者您可以更改模型以接受参数。例如,我们可以使用以下方法覆盖该get_context_data方法:from django.contrib.auth.mixins import LoginRequiredMixinfrom django.views.generic import DetailViewclass SomeView(LoginRequiredMixin, DetailView):    model = SomeModel    def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        form = MyModelForm()        form['some_field'].queryset = Model.objects.filter(user=self.request.user)        context.update(form=form)        return contextDetailView带有表单的A通常是UpdateView[Django-doc],因为该表单因此处理您的DetailView. 你可以考虑研究一下。
随时随地看视频慕课网APP

相关分类

Python
我要回答