如何在Django中将滚动div直接添加到ModelForm?

时间:2011-06-10 11:25:41

标签: python django forms html scroll

我有以下代码,但它不会将滚动div放在任何位置。我尝试过的所有其他组合(例如将div放在桌子周围)会导致滚动条的某些或其他错误放置。 这是html:

<form action="" method="post">
  <table>
    <div style="overflow: auto; width : 200px; height : 50px;">
      {{ form }}
    </div>
    <tr><td colspan="2"><input type="submit" value="Save"/></td></tr>
  </table>
</form>

我的表单如下:

class GroupForm(forms.ModelForm):
    class Meta:
        model = Group

    def __init__(self, *args, **kwargs):
        super(GroupForm, self).__init__(*args, **kwargs)

        self.fields['permissions'].widget = forms.CheckboxSelectMultiple()
        self.fields['permissions'].choices = ((p.id, p.name) for p in Permission.objects.order_by("name"))

我的views.py看起来像这样:

def group_edit(request, group_id, template_name="group_edit.html", extra_context=None, form_class=None):

    edit_group = get_object_or_404(Group, pk=group_id)
    extra_context = extra_context or {}
    form_class = form_class or GroupForm
    extra_context["edit_group"] = edit_group

    if request.method == "POST":
        form  = form_class(instance=edit_group, data=request.POST)
        if form.is_valid():
            form.save()
            return redirect(reverse("global_group_list"))
    else:
        form = form_class(instance=edit_group)

    extra_context["form"] = form

    return direct_to_template(
        request,
        template_name,
        extra_context=extra_context
    )

2 个答案:

答案 0 :(得分:2)

将DIV放在像这样的表格行中

<form action="" method="post">
  <table>
    <tr><td><div style="overflow: auto; width : 200px; height : 50px;">
      {{ form.as_p }}
    </div></td></tr>
    <tr><td colspan="2"><input type="submit" value="Save"/></td></tr>
  </table>
</form>

答案 1 :(得分:0)

这不是一个真正的django问题,所以你发布的python代码确实没什么区别。我认为问题是你希望表格有滚动条,但保持提交按钮分开吗?

您有两个直接选择。您可以将{{form}}包装在第二个表中,因此您有两个嵌套表。或者你可以移动div并将提交按钮移到桌子外面,这样桌子就会被div包裹。

无论哪种方式,你现在拥有的东西都行不通。除了tbody或tr之外,任何表标记的直接子标记都将被忽略。