我有一个创建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
答案 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)