将值插入到表单集中

时间:2009-09-01 04:08:20

标签: django django-forms

我有一个modelform,它有一个我从表单中排除的user_id字段。此表单被制作为modelformset。我排除用户字段的原因是因为它不是可编辑的值。我不希望这个值转到HTML表单,在那里它可以被顽皮的用户篡改。

当我尝试保存此模型formset时,我收到一条错误消息,指出user_id不能为null。在将视图中的formset保存之前,我需要将request.user添加到每个表单。我怎样才能做到这一点?我知道如何将值添加到modelform的单个实例,但我无法弄清楚如何使用formset来实现它。

2 个答案:

答案 0 :(得分:1)

如果您没有将request.user传递给表单,则没有直接的方法可以在表单的save方法中获取它。

但是,如果您希望用户在表单的保存方法中直接从上下文外部使用,则有一种方法。退房,http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser

答案 1 :(得分:1)

当您保存formset时,请记住:

 if formset.is_valid():
     instances = formset.save(commit=False)
     for instance in instances:
         instance.user_id = request.user.id
         instance.save()

你不需要任何其他东西。 BTW我不明白为什么保存用户ID不是用户对象?