Как добавить прокрутку div непосредственно в ModelForm в Django? - PullRequest
2 голосов
/ 10 июня 2011

У меня есть следующий код, но он нигде не помещает прокручиваемый 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 ]

2 голосов
/ 10 июня 2011

Поместите 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>
0 голосов
/ 10 июня 2011

Это на самом деле не проблема django, поэтому код Python, который вы разместили, действительно не имеет значения.Я думаю, проблема в том, что вы хотите, чтобы в таблице были полосы прокрутки, но держите кнопку отправки отдельно?

У вас есть два немедленных варианта.вы можете обернуть {{form}} во вторую таблицу, чтобы у вас было две вложенные таблицы.Кроме того, вы можете переместить кнопку «div» и «submit», чтобы она находилась за пределами вашего стола, чтобы таблица была обернута div.

В любом случае то, что у вас есть, не будет работать.любой непосредственный дочерний тег табличного тега, кроме tbody или tr, будет игнорироваться.

...