在保存其django ModelForm之前,将模型用户字段设置为当前登录的用户 [英] Set a models user field to the current logged in user before saving its django ModelForm
问题描述
我有一个如下所示的模型窗体
类JobForm(ModelForm):
class Meta:
model = Job
exclude =('date_added','date_modified','owner','status','tags','slug','winner_tech','completiondate')
所有者字段是一个与Django用户模型链接的外键,它被排除在表单中。
在我保存表单之前,我尝试将所有者字段设置为当前登录的用户。
我的保存功能包含在以下代码中。
def createJob )
bix_user = getBixUser(request.user)
如果request.method =='POST':
form = JobForm(request.POST)
form.fields ['owner '] = bix_user
如果form.is_valid():
form.save()
返回HttpResponseRedirect('/ home')
else:
....
我很确定我做错了事情。
我没有和我的django方面保持一段时间,所以我会感谢任何帮助。
我总是覆盖 save()
方法并添加一个用户。
像这样:
类JobForm(ModelForm):
pre>
def save(self,user,commit = True):
job = ModelForm。 save(commit = False)
job.owner = user
如果提交:
job.save()
返回作业
i have a model form as so below
class JobForm(ModelForm): class Meta: model = Job exclude = ('date_added', 'date_modified','owner','status','tags','slug','winning_tech','completiondate')
The owner field is a foreignKey linked to the Django User model and it's excluded from being rendered in the form. I am trying to set the owner field to the current logged in user before i save the form. My save function is contained in the following code.
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: ....
I am very sure that i am doing the wrong thing. I have not been in touch with my django side for a while so i would appreciate any help.
解决方案I always overwrite the
save()
method and add a user to it.Something like this:
class JobForm(ModelForm): def save(self, user, commit=True): job = ModelForm.save(commit=False) job.owner = user if commit: job.save() return job
这篇关于在保存其django ModelForm之前,将模型用户字段设置为当前登录的用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!