如何解决自定义表单作者-自动将作者保存到DB
| 我有一个自定义表单...我想自动保存表单数据的作者(经过身份验证的用户)。我正在使用ModelForm创建表单。 models.py class Tracker(models.Model):
client = models.ForeignKey(Clients)
user = models.ForeignKey(User)
description = models.TextField()
...
我也将自定义配置文件链接到django users表... auth也可以正常工作...我可以读取用户和id ...
表格
class TrackerForm(ModelForm):
def __init__(self,*args,**kwargs):
super(TrackerForm,self).__init__(*args,**kwargs)
self.fields.keyOrder = [\'date_job_start\',\'date_job_end\',\'description\',\'onsite\',\'billable\',\'client\']
class Meta:
model = Tracker
widgets = {
\'client\': HiddenInput(),}
从上层阶级创建表单时,我尝试保存它...它需要用户数据(缺少警告)。我如何更改它,以便它将自动保存经过身份验证的用户,而不是要求它?我知道我没有在此处定义用户字段...这是因为我不想为此下拉菜单...我希望用户从身份验证中保存...而无需进行任何选择或显示...
附注:我知道initial
选项...必须有更好的方法吗?
谢谢!
BR
解决方法
class TrackerForm(ModelForm):
def __init__(self,*args,**kwargs):
self.user = kwargs.pop(\'user\')
super(TrackerForm,self).__init__(*args,**kwargs)
self.fields.keyOrder = [\'date_job_start\',\'date_job_end\',\'description\',\'onsite\',\'billable\',\'client\']
class Meta:
model = Tracker
widgets = {
\' client\': HiddenInput(),}
exclude = (\'user\',)
def save(self):
obj = super(TrackerForm,self).save(commit=False)
obj.user = self.user
obj.save()
return obj
并且鉴于:
form = TrackerForm(user=request.user) #and other parameters
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。