我的模型表格如下所示
class JobForm(ModelForm):
class Meta:
model = Job
exclude = ('date_added', 'date_modified','owner','status','tags','slug','winning_tech','completiondate')
owner字段是一个链接到Django User模型的foreignKey,它被排除在表单中呈现。 我想在保存表单之前将所有者字段设置为当前登录用户。 我的保存功能包含在以下代码中。
def createJob(request):
bix_user=getBixUser(request.user)
if request.method == 'POST':
form = JobForm(request.POST)
form.fields['owner']=bix_user
if form.is_valid():
form.save()
return HttpResponseRedirect('/home')
else:
....
我很确定我做错了。 我有一段时间没与我的django方面保持联系,所以我将不胜感激。
答案 0 :(得分:2)
我总是覆盖save()
方法并向其添加用户。
这样的事情:
class JobForm(ModelForm):
def save(self, user, commit=True):
job = ModelForm.save(commit=False)
job.owner = user
if commit:
job.save()
return job
答案 1 :(得分:0)
回答我自己的问题,使用commit = false并修改你想要的任何值。 此代码部分从前两个答案中得出想法(wolPh和用户***)
def save(self,user, commit=True, *args, **kwargs):
job = super(JobForm, self).save(commit=False,*args, **kwargs)
job.owner = user
if commit:
job.save()
return job
答案 2 :(得分:0)
我在WoLph上面使用了一个变体:
def save(self, *args, **kwargs):
# add defaut owner field if not already stated
if 'owner' not in self.__dict__:
self.creator = system_user()
super(MyModel, self).save(*args, **kwargs)