django 每次更改数据库时更新表[HTMX][Dajngo-tables 2]

jogvjijk  于 2023-03-13  发布在  Go
关注(0)|答案(1)|浏览(161)

我希望在每次更改数据库时更新表,而不刷新。另外,我希望在更新发生时保留搜索中的查询参数
到目前为止,我所做的是使用hx-get从另一个模板和视图中检索我的表,以获得更新后的表。
但是,当数据库发生更改时,我不知道从哪里开始触发更新
Views.py

def display_view(request):
    myFilter = ParticipantFilter(request.GET, queryset=Participant.objects.all())
    table = ParticipantTable(myFilter.qs)
    table.paginate(page=request.GET.get("page", 1), per_page=10)
    return render(request, 'display.html', {'table': table,'myFilter': myFilter})

def data_only_view(request):
    myFilter = ParticipantFilter(request.GET, queryset=Participant.objects.all())
    table = ParticipantTable(myFilter.qs)
    table.paginate(page=request.GET.get("page", 1), per_page=10)
    return render(request, 'updatedDisplay.html', {'table': table})

display.html

{% extends "base.html" %}
{% block content %}

<form method="get">
    {{ myFilter.form }}
    <button type="submit">Search</button>
  </form>

<div id="table-results" hx-get="/updatedDisplay" hx-include = "[name='first_name']">
{% load render_table from django_tables2 %}
<table class="table">
  {% render_table table %}
</table>

{% endblock %}
</div>

updateDisplay.html

{% load render_table from django_tables2 %}
<table class="table">
  {% render_table table %}
</table>
vq8itlhq

vq8itlhq1#

如果没有django通道,你只能使用缓冲池。我看到你使用hx-include来输入名字'first_name',我相信你可以包含完整的表单。另外,你可以指向你的表单来发出htmx请求,而不是重载页面:

<form hx-get="/updatedDisplay" id="my_form" hx-target="#table-results">
    {{ myFilter.form }}
    <button type="submit">Search</button>
  </form>

<div id="table-results" hx-get="/updatedDisplay" hx-include="#my_form" hx-trigger="every 5s">
#innerHTML
</div>

这样你的表将每5秒更新一次。

相关问题