我有一个通用的 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. 你可以考虑研究一下。
添加回答
举报
0/150
提交
取消