Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在保存django ModelForm之前,将models user字段设置为当前登录用户_Django_Django Views_Django Forms - Fatal编程技术网

在保存django ModelForm之前,将models user字段设置为当前登录用户

在保存django ModelForm之前,将models user字段设置为当前登录用户,django,django-views,django-forms,Django,Django Views,Django Forms,我有一个模型表格如下 class JobForm(ModelForm): class Meta: model = Job exclude = ('date_added', 'date_modified','owner','status','tags','slug','winning_tech','completiondate') owner字段是链接到Django用户模型的foreignKey,它不在表单中呈现。 在保存表单之前,我试图将所有者字段设置为

我有一个模型表格如下

class JobForm(ModelForm):
    class Meta:
        model = Job
        exclude = ('date_added', 'date_modified','owner','status','tags','slug','winning_tech','completiondate')
owner字段是链接到Django用户模型的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方面联系了,因此我非常感谢您的帮助。

因此回答了我自己的问题,使用commit=false并修改您想要的任何值。 本代码部分从前面的两个答案(wolPh和user***)中吸取了一些想法

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

def保存(self、user、commit=True、*args、**kwargs):

job=super(JobForm,self).save(commit=False,*args,**kwargs) job.owner=用户 如果提交: job.save() 返回工作

我总是覆盖
save()
方法并向其中添加用户

大概是这样的:

class JobForm(ModelForm):
    def save(self, user, commit=True):
        job = ModelForm.save(commit=False)
        job.owner = user
        if commit:
            job.save()
        return job

我在上面的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)

谢谢,这样更整洁,减少了视图函数中的混乱。我使用的是一个模型表单,所以我认为我不能直接访问所有者字段。“所有者”字段也从表单中排除。