Обновление таблицы при каждом изменении моей базы данных [HTMX][Dajngo-tables2]

Я хочу обновлять таблицу каждый раз, когда моя база данных изменяется, без обновления. Также я хочу сохранить параметры карьеры из поиска, когда происходит обновление

До сих пор я использовал 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>

Без django channels вы можете использовать только pooling. Я вижу, что вы использовали 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 секунд.

Вернуться на верх