【问题标题】:Passing in context variables to form将上下文变量传递给表单
【发布时间】:2021-06-28 18:54:34
【问题描述】:

我想将下面视图函数中的parent_username 变量传递给LevelTestModelForm,以便我可以自动填写表单输入之一作为该变量。 这是视图:

def LevelTestView(request, pk):
    parent_username = User.objects.get(pk=pk).username
    form = LevelTestModelForm()
    if request.method == "POST":
        form = LevelTestModelForm(request.POST)
        if form.is_valid():
            form.save()
            return reverse("profile-page")
    context = {
        "form": form
    }
    return render(request, "leads/leveltest.html", context)

我想要的是用户无需输入父用户名即可提交此表单。老实说,我什至不希望该字段出现在表单上,​​而只是在用户提交表单时自动添加它。 我希望你们能帮忙。非常感谢。

LevelTestModelForm 了解更多信息:

class LevelTestModelForm(forms.ModelForm):
    username = parent
    class Meta:
        model = LevelTest
        fields = (
            'first_name',
            'last_name',
            'age',
            'username',
        )

【问题讨论】:

  • 为什么要填写一个输入元素,而不是仅仅将这个添加到包裹在表单中的实例中?
  • 我不明白你在说什么。你能澄清一下吗?我想要的是用户无需输入父用户名即可提交此表单。老实说,我什至不希望该字段出现在表单上,​​而只是在用户提交表单时自动添加。

标签: python django forms view django-forms


【解决方案1】:

我建议将它作为 initial 参数传递给表单,如下所示: (假设您的表单中有一个parent 字段)

form = LevelTestModelForm(initial={'parent': parent_username })

【讨论】:

  • 它说当我像上面一样添加它时没有定义'父'(我在表格中编辑了我的问题)
  • 我想你表单中的 username 对应于我的 parent 然后 in 应该是 form = LevelTestModelForm(initial={'username': parent_username })
  • 非常感谢!它现在正在工作。伙计,我已经为此苦苦挣扎了几个小时。再次感谢!
  • 嘿,你知道我怎样才能让用户无法编辑用户名字段吗?所以,基本上它是只读的。
  • 在我的脑海中,我会在form = LevelTestModelForm() 下添加类似form.fields['yourfieldname'].widget.attrs['readonly'] = True 的内容,但不要引用我的话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2021-02-07
  • 2018-11-07
  • 1970-01-01
  • 2016-02-03
相关资源
最近更新 更多