我需要在当前用户参与的情况下执行表单验证。我知道怎么做但是使用FBV方法。可能是这样的:
首先声明__ init __()方法:
def __init__(self, user, *args, **kwargs):
self.user = user
super(MyFormClass, self).__init__(*args, **kwargs)
所以现在我可以在任何验证方法中使用self.user。
稍后在视图方法中我可以:
if request.POST:
form = MyFormClass(request.user, request.POST)
我的问题:如何使用CBV做同样的事情:
目前我正在使用CreateView通用和form_class attr:
class MyModelCreate(CreateView):
model = MyModel
form_class = MyFormClass
如何使用这种方式用当前用户实例化MyFormClass。
答案 0 :(得分:1)
您需要覆盖get_form()
或get_form_kwargs()
。如果你对CBV中要覆盖哪些方法很模糊,那么很好的参考就是优秀的CCBV网站。以下是您希望从CCBV文档中获得的内容的链接:
https://ccbv.co.uk/projects/Django/1.11/django.views.generic.edit/CreateView/#get_form_kwargs
答案 1 :(得分:0)
您可以使用CreateView的form_valid方法获取用户。
def form_valid(self, form):
user = self.request.user
# add your validation
return super(YourView, self).form_valid(form)