0
我想从django CBV中的form_valid()中取出公共代码。代码如下:继承似乎并没有工作
class GenericCreate(CreateView):
def form_valid(self, form):
form.instance.usercreator = self.request.user
form.instance.slug = unique_slug(form.instance.headline, Article)
return super(GenericCreate, self).form_valid(form)
class ArticleCreate(GenericCreate):
success_url = '/'
form_class = ArticleForm
template_name = "articles/article_form.html"
class OrganizationCreate(GenericCreate):
success_url = '/'
form_class = OrganizationForm
template_name = "organizations/organization_form.html"
def form_valid(self, form):
form.instance.pub_date = timezone.now()
# form.instance.usercreator = self.request.user # no error if this is uncommented
return super(GenericCreate, self).form_valid(form)
当OrganizationForm提交,OrganizationCreate形式被处理,但usercreator似乎并没有得到来自GenericCreate类设置...我收到以下错误:
NOT NULL constraint failed: articles_article.usercreator_id
当我在OrganizationCreate.form_valid()中强制form.instance.usercreator = self.request.user
时,我不会收到此错误。
这就好像继承不起作用。如何避免在OrganizationCreate.form_valid()中显式设置createuser并使用GenericCreate.form_valid()?