【问题标题】:Select objects with checkboxes in Class Based ListView在基于类的 ListView 中选择带有复选框的对象
【发布时间】:2016-04-28 12:48:30
【问题描述】:

我是 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 %}

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

【问题讨论】:

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


    【解决方案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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2011-09-15
      • 2012-12-11
      相关资源
      最近更新 更多