【问题标题】:What is the correct way to manually add html input fields in django?在 django 中手动添加 html 输入字段的正确方法是什么?
【发布时间】:2013-01-26 04:06:18
【问题描述】:

我是 django 新手,来自 php 世界。我不知道如何使用 django 创建项目所需的某些输入字段。所以我手动将这些字段的 html 添加到模板中。即,我添加了复选框和菜单。然后,在 view.py 中,我添加了代码以通过 request.POST 获取用户对复选框和菜单的选择。使用这些选择,我可以修改并保存表单的实例。

一切正常。唯一的故障是表单无法验证。如果发生这种情况,我需要重新显示表单,并在顶部显示错误消息。所以我调用 render 来重新显示表单。重新显示的表单丢失了我自定义的 html 的所有选择。即,自定义复选框和菜单被重置,但不是 django 创建的输入字段。有没有办法保存用户对自定义 html 的选择?谢谢。

【问题讨论】:

    标签: django django-forms django-templates django-views


    【解决方案1】:

    models.py

    class Debt(models.Model):
        user = models.ForeignKey(User)
        name = models.CharField(max_length=50,
            help_text="Name to identify your debt.")
        due_day = models.PositiveSmallIntegerField(
            help_text="Day of the month payment is due.")
    

    forms.py

    class DebtForm(forms.ModelForm):
        class Meta:
            model = Debt
    

    views.py

    def add_debt(request):
        if request.method == 'POST':
            form = DebtForm(request.POST)
            if form.is_valid():
                form.save() 
    return render(request, 'add_debt.html', {
        'form': DebtForm(),
    }) 
    

    add_debt.html

    <form method="post">{% csrf_token %}
        {% for field in form %}
            {{field}}<br/>
        {% endfor %}
        <input type="submit" value="Save Debt">
    </form>
    

    【讨论】:

    • 好的,我看到这两个答案基本都说 y 我的自定义输入必须与模型/表单中的条目链接,以便保存数据。它们不能像我的那样是“独立”输入,用于修改保存在实例中的内容。我就是这么想的。谢谢。
    【解决方案2】:

    您可以使用您的输入创建一个表单with this 要了解如何使用表单,see here 您可以使用自定义输入 use ModelForms

    【讨论】:

    • 好的,我看到两个答案,基本上我的自定义输入必须与模型/表单中的条目链接,以便保存数据。它们不能像我的那样是“独立”输入,用于修改保存在实例中的内容。我就是这么想的。谢谢。
    • 你可以创建一个表格来做,或者修改模型表格来做。向modelform类添加字段,您的问题将得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多