【发布时间】:2016-07-01 15:42:23
【问题描述】:
我有一个模型,其中一个必填字段是当前登录的用户。在为模型创建新记录时,我执行以下操作:
views.py
def post(self, request):
bound_form = self.form_class(request.POST)
if bound_form.is_valid():
new_position = bound_form.save()
问题在于,这仅在用户在表单上自行选择时才有效。我需要一种方法来自动设置当前用户,并且根本不在表单上显示用户字段。我试过这个:
def post(self, request):
bound_form = self.form_class(request.POST)
if bound_form.is_valid():
new_position = bound_form.save(commit=False)
new_position.user = request.user
new_position.save()
但这不起作用,因为bound_form 无效,因为它缺少模型上的必填字段用户。在尝试保存表单之前还可以在哪里设置用户?在模板中,还是视图的get方法?
【问题讨论】:
-
你应该做你所做的,除了你需要首先从表单中排除用户字段。
-
我不确定我是否在关注。我目前只显示我希望用户填写的字段(即:我已删除用户字段)。换句话说,...如果用户选择自己,一切正常,但是如果我删除该字段以使他们无法选择自己,那么即使使用上面的代码,我也无法保存表单。
-
你应该在你的
class Meta:中使用exclude=('user',)form -
啊,...我明白你的意思了。谢谢。那行得通。