【问题标题】:Setting current user for required model field为所需的模型字段设置当前用户
【发布时间】: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
  • 啊,...我明白你的意思了。谢谢。那行得通。

标签: python django


【解决方案1】:

您应该在您的formclass Meta: 中使用exclude=('user',)。 @Daniel Roseman 也是对的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多