我有一个modelform,它有一个我从表单中排除的user_id字段。此表单被制作为modelformset。我排除用户字段的原因是因为它不是可编辑的值。我不希望这个值转到HTML表单,在那里它可以被顽皮的用户篡改。
当我尝试保存此模型formset时,我收到一条错误消息,指出user_id不能为null。在将视图中的formset保存之前,我需要将request.user添加到每个表单。我怎样才能做到这一点?我知道如何将值添加到modelform的单个实例,但我无法弄清楚如何使用formset来实现它。
答案 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不是用户对象?