为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2022-04-23 21:13:56
我有一个通用的 Django 泛型DetailView,我希望能够通过django.form. 选项是属于用户的对象列表。我可以Model.objects.all()对表单中的所有对象执行此操作,但是如何过滤掉属于用户的选项而无法request.user从表单访问?我看过一个可以将查询集注入表单的示例:form = MyForm()form['field'].queryset = Model.objects.filter(user=user)但是在 django 通用视图中没有地方可以真正做到这一点(有吗?)
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您可以在 a 中执行相同的技巧DetailView,或者您可以更改模型以接受参数。


例如,我们可以使用以下方法覆盖该get_context_data方法:


from django.contrib.auth.mixins import LoginRequiredMixin

from django.views.generic import DetailView


class 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 context

DetailView带有表单的A通常是UpdateView[Django-doc],因为该表单因此处理您的DetailView. 你可以考虑研究一下。


查看完整回答
反对 回复 2022-04-23
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信