我有一个模型,其属性名为authID,如下所示:
authID = models.CharField(max_length=400)
在我看来,表单中的所有字段都按如下方式放入数据库:
if request.method == 'POST':
form = PersonalDetailsModelForm(request.POST)
if form.is_valid():
form.save()
我想知道怎么做,就是当他们提交表单时,我还想将authID的值放入我的数据库中。但是,authID不是我表单中的字段。出于安全考虑,我也不想将其设置为隐藏字段。 您如何为模型中的 而不是 的数据库字段添加值?
答案 0 :(得分:1)
在保存实例之前,您可以覆盖PersonalDetailsModelForm
上的save()
method来设置此值:
def save(self, commit=True):
self.instance.authID = 'some_value' # Set the auth ID
return super().save(commit=commit)
如果authID
来自您的视图,则可以将其作为关键字参数传递给覆盖的save()
方法。
答案 1 :(得分:1)
使用 save()
commit=False
方法
#views.py
if request.method == 'POST':
form = PersonalDetailsModelForm(request.POST)
if form.is_valid():
model_instance = form.save(commit=False) # 'commit=False' plays key role here
model_instance.authID = 'your auth id'
model_instance.save()
...