如何将当前用户设置为ModelForm的属性?

时间:2016-08-02 11:45:45

标签: python django django-forms

我有一个创建Reservation对象的表单。该对象具有customer = models.ForeignKey(User) - 这是必需属性。

如何使用ReservationCreationForm().save()创建对象?

我试图覆盖保存方法:

def save(self,user,*args,**kwargs):
    self.customer = user
    super(ReservationCreationForm).save()

所以我可以使用request.user属性创建一个表单,但它不起作用 - 异常值:

'super' object has no attribute 'save'

你会做什么?

修改

根据Todor的回答,我已将保存更改为

def save(self,user,*args,**kwargs):
    self.customer = user 
    super(ReservationCreationForm, self).save(*args, **kwargs)

这解决了save()本身的问题,但它仍然没有将user添加到Reservation,因此它引发了异常值:

va_app_reservation.customer_id may not be NULL

1 个答案:

答案 0 :(得分:1)

您没有正确调用.save方法。 super接受第二个参数,即对象实例。

super(ReservationCreationForm, self).save(*args, **kwargs)

更新

您没有将customer设置为reservation instance,而是设置为form instance,这就是您的reservation对象没有customer的原因。

试试这个,(不要忘记return):

def save(self, user, *args,**kwargs):
    self.instance.customer = user 
    return super(ReservationCreationForm, self).save(*args, **kwargs)