python - 在基于类的 ListView 中选择带有复选框的对象

标签 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 %}

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

最佳答案

您应该定义 View 的 post 方法:

class IndexView(LoginRequiredMixin, generic.ListView):

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

并在另一个 View 上处理发布数据。

此外,您 get_queryset 没有返回查询集,因为您没有调用 all()。它应该是: 返回 Chiamata.objects.all()

关于python - 在基于类的 ListView 中选择带有复选框的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36915191/

相关文章:

python - django 多对多比较

c++ - 使用 MoveWindow 或 SetWindowPos 时,编辑控件/组合框的窗口大小未正确调整

android - 用对象项填充 listView 的正确方法?

java - 我想在长按时删除 ListView 上的项目

python - 在 Python 中级联可选参数

python - Django floppyforms OSMPointWidget 不显示 map

python - 如何存储用户输入数据以便稍后在Python中调用?

javascript - Tom-Select 作为 Django 小部件

python - 在 DJANGO 的同一查询中使用 "contains"和 "iexact"

python - docker python 提卡