【发布时间】:2011-05-29 13:48:23
【问题描述】:
我在trunk上使用django 1.3,开始学习类视图。
我有这个:
class Project(models.Model):
title = models.CharField(max_length=90)
slug = models.CharField(max_length=90)
description = models.TextField()
owner = models.ForeignKey(User)
class ProjectForm(ModelForm):
class Meta:
model = Project
exclude = ('owner',)
widgets = {
'description': Textarea(attrs={'cols': 40, 'rows': 20}),
}
class ProjectCreateView(CreateView):
model = Project
form_class = ProjectForm
def get(self, request, *args, **kwargs):
return super(ProjectCreateView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return super(ProjectCreateView, self).post(request, *args, **kwargs)
我正在尝试使用 django 中的模型表单获取表单,不包括所有者字段,然后使用 request.user 属性获取字段值。
这种形式是有效的。但是如何确保 ModelForm 使用 request.user 作为 Project.owner 字段呢?
我的第一个猜测是从视图中覆盖 get_form_kwargs 方法
class ProjectCreateView(CreateView):
# .....
def get_form_kwargs(self, **kwargs):
self.initial['owner': self.request.user})
kwargs = super(ProjectCreateView, self).get_form_kwargs(**kwargs)
return kwargs
但似乎对模型表单使用的数据没有影响
【问题讨论】:
-
由于我不知道如何使用当前的 django trunk 版本正确执行此操作,因此我制作了一张带有补丁的票来解决此问题 →code.djangoproject.com/ticket/14940
标签: django django-forms