【发布时间】:2020-08-28 19:22:42
【问题描述】:
我正在创建一个 Django 项目。我的数据库中有很多数据,我正在通过表格将其呈现到我的模板中。每列对应于我的数据库中的字段。除此之外,我的应用程序允许用户对选定的数据执行一些操作。我希望用户能够通过单击按钮来运行这些操作(通过views 中的函数)。
很明显,让用户为每一行单击一个按钮会很乏味。所以我认为最好让他们点击相应行的复选框,然后让他们点击一个按钮来运行我的项目中的特定功能。
请原谅我,但我不知道如何处理这种设置。我已经阅读了有关复选框小部件的信息,但是如果它们选中了复选框,我如何才能对在 HTML 模板上呈现的一组对象运行函数。
感谢您的指导!
这是我所拥有的模板 sn-p:
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">ID</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Major</th>
<th scope="col">Promote</th>
</tr>
</thead>
<tbody>
{% for s in list %}
<tr>
<th scope="row">{{s.student_id}}</th>
<td>{{s.user.username}}</td>
<td>{{s.user.email}}</td>
<td>{{s.major}}</td>
<td><a type="button" class="btn btn-success" href="{% url 'emailPage' s.student_id%}">Make Tutor</a></td>
</tr>
</tbody>
</table>
尝试将每一行按钮替换为一键单击系统。我从我的观点传递 masterList。
models.py
class masterList(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="student")
student_id = models.IntegerField(primary_key=True, null=False, validators=[MaxValueValidator(999999), MinValueValidator(100000)])
phone = PhoneField(blank=False, help_text='best number to contact you')
major = models.CharField(max_length=500, blank=False)
eof = models.BooleanField(blank=False, choices = [(True, 'Yes'), (False, 'No')])
arc = models.BooleanField(blank=False, choices = [(True, 'Yes'), (False, 'No')])
class Meta():
verbose_name = 'Student Info'
def __str__(self):
return self.user.username
【问题讨论】:
-
您能否发布一些代码 sn-ps 以帮助阐明向用户显示的数据结构以及用于更改数据的方法。您描述了单击按钮和分配给行的按钮,但是我正在努力想象您当前的状态和最终目标。
-
@Display_name 我更新了我的帖子
-
你说你想要“让他们点击相应行的复选框,然后让他们点击一个按钮来运行我的项目中的特定功能。”我想确认你的意思是“行”而不是“列”。如果是这样,将一个html按钮放在表外并将其链接到视图中的for循环函数不是最简单的吗?这听起来像你想要的吗?类似于 Django 管理员中用于删除用户的内容?
-
@Display_name 这正是我想要的。
-
@Display_name 我将如何运行一些代码循环浏览视图并确定它是否已被检查。为此在黑暗中。也许您的答案中有演示?
标签: django django-forms django-templates