在基于类的ListView中选中具有复选框的对象

时间:2016-04-28 12:48:31

标签: python django listview django-templates django-views

我是一个django新手,我正在制作一个小应用来记录夜间收到的工作电话。 目前该应用程序正常工作。我已经制作了一个表单来填充调用数据,然后使用通用ListView将其显示为表格。

class IndexView(LoginRequiredMixin, generic.ListView):
   login_url = '/login/'
   redirect_field_name = 'redirect_to'
   template_name = 'chiamate/list_full.html'
   context_name = 'lista_chiamate'
   def get_queryset(self):
       return Chiamata.objects.all

以下是模板的代码:

{% extends 'chiamate/base.html' %}

{% block content %}

{% if user.is_authenticated %}
    <a href="{% url "chiamate:inserimento chiamata" %}" class="btn btn-success"><i class="fa fa-plus-square-o fa-lg" aria-hidden="true"></i> Nuova Chiamata</a>
<p></p>
{% else %}
    <p>Welcome, Guest please <a href="{% url 'login' %}">[login]</a></p>
{% endif %}

    <div class="table-responsive">
    <table class="table table-striped">
        <form action="{{ action }}" method="post">
            {% csrf_token %}
    {% for chiamata in object_list %}
        {% if chiamata.data_chiusura.weekday == 4 or chiamata.data_chiusura.weekday == 5 or chiamata.data_chiusura.weekday == 6 %}
            <tr class="info">
        {% elif chiamata.data_chiusura == None  %}
            <tr class="danger">
        {% else %}
            <tr>
        {% endif %}
                <td><input class="checkbox" name="chiamata_mail" type="checkbox" id="checkbox_{{ chiamata.id }}"value="{{ chiamata.id }}"></td>
                <td class="txtdata">{{ chiamata.utente.get_full_name|wordwrap:5  }}</td>
                <td class="txtdata"><a href="{% url 'chiamate:dettaglio chiamata' chiamata.id %}">{{ chiamata.data_chiamata|date:"l d M Y H:i" }}</a></td>
                <td>{{ chiamata.interlocutore }}</td>
                <td>{{ chiamata.testo_chiamata|truncatechars:200 }}</td>
                <td class="txtdata">{{ chiamata.reperibile|wordwrap:5 }}</td>
                <td>{{ chiamata.data_chiusura|date:"H:i" }}</td>
                <td><a href="{% url 'chiamate:modifica chiamata' pk=chiamata.id %}" class="btn btn-success" ><i class="fa fa-pencil-square-o fa-lg" aria-hidden="true"></i> Edit</a></td>
                <td><a href="{% url 'chiamate:cancella chiamata' pk=chiamata.id %}" class="btn btn-danger"><i class="fa fa-trash-o fa-lg" aria-hidden="true"></i> Delete</a></td>
            </tr>
        {% endfor %}
        <input id="send_selected" type="submit" value="Send" />
    </form>
    </table>
    </dv>
{% endblock %}

我已经尝试在此处添加复选框。当我这样做时,它们显示在页面上,但是当我按下发送按钮(当前实现为表单发送,但我想使用引导按钮)时,我不知道如何将对象传递给电子邮件功能,或者至少在新页面中显示它们。

1 个答案:

答案 0 :(得分:1)

您应该定义视图的post方法:

class IndexView(LoginRequiredMixin, generic.ListView):

   def post(self, request, *args, **kwargs):
       return ChiamataUpdateView.as_view()(request)

并在另一个视图上处理帖子数据。

此外,由于您未调用get_queryset,因此all()未返回查询集。它应该是: return Chiamata.objects.all()