【发布时间】:2012-02-09 02:54:28
【问题描述】:
我想创建一个查询集,将当前用户用作 ModelForm 中的过滤器:
class BookSubmitForm(ModelForm):
book = forms.ModelChoiceField(queryset=Book.objects.filter(owner=request.user),)
...
Django 是否将请求传递给表单?这是好习惯吗?如何使用请求? (当然名字请求没有定义)
编辑:
我尝试了另一种解决方案,即在视图中调用表单并传递请求:
form = BookSubmitForm(request)
然后以我使用的形式:
class BookSubmitForm(ModelForm):
def __init__(self, request, *args, **kwargs):
super(BookSubmitForm, self).__init__(*args, **kwargs)
self.fields["library"].queryset = Library.objects.filter(owner=request.user)
它有效并且代码在表单中。现在我不确定这是不是最好的解决方案,是否可以改进?
【问题讨论】:
-
Django 文档:Models and request.user