我是 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/