Django как изменить базу данных с помощью кнопки на новом окне и закрыть, обновить главную страницу?

Я создал страницу "Список оповещений". (alert_list.html)

и когда я нажимаю на кнопку, он отображает детальную страницу использует пк в новом окне. (alert_detail.html)

Но у меня есть некоторые проблемы с этим.

То, что я хочу сделать...

  1. change Event.event_status value to 0.
  2. close new window(detail page)
  3. refresh main page(alert list page)
<alert_list.html>

{% for event_alert in event_list %}
                {% if event_alert.event_status == 1 %}
                <div class="col-1 red">
                    <div class="p-3 rounded-2" id="dash_board_patient_alert">
                        <a href="{% url 'Alert Detail' event_alert.event_id %}">{{event_alert.member_id}} {{event_alert.event_type}}</a>
                    </div>
                </div>
                
                {% endif %}
                {% endfor %}
                {{event_alert_activate_count}}
                {{pink_block}}
                {% for _ in pink_block %}
                <div class="col-1 pink">
                    <div class="p-3 rounded-2" id="dash_board_patient_alert">
                        <a href="#"></a>
                    </div>
                </div>
                {% endfor %}

<alert_detail.html>

            {% for event_alert in event_list %}
            <form method="POST" class="post-form" action ="{% url 'Alert Update' event_alert.pk %}">
            {% csrf_token %}
            {{ form }}
            <button
                type="submit"
                class="btn btn-primary"
                id="patient_alert_result_confirm">
                Confirm
            </button>
            </form>
            {% endfor %}

<alert_update.html>
I don't have any idea.. help me this page
<views.py>

def alert_list(request):
Event.objects.order_by('-event_time')[:12]
    event_alert_activate_count = Event.objects.filter(event_status__startswith='1')[:12].count()
    pink_block = int(12)
    event_list = Event.objects.order_by('-event_time')

    context = {
               'event_alert_activate_count': event_alert_activate_count,
               'event_list' : event_list,
               'pink_block' : pink_block
               }

    return render(request, 'dashboard/alert_list.html', context)



def alertDetail(request,pk):
    event = get_object_or_404(Event, pk=pk)
    event_list = Event.objects.order_by('-event_time')[:1]

    context = {'event_list': event_list,
               'event' : event,}
    return render(request, 'dashboard/alert_detail.html', context)



def alertUpdate(request,pk):
    event = get_object_or_404(Event,pk=pk)
    event_list = Event.objects.order_by('-event_time')[:1]
    if request.POST :
        event_status_form = EventStatusForm(request.POST)
        if event_status_form.is_valid():
            change_event_status = 0
            event.event_status = change_event_status
            event_status_form.save()
            return HttpResponse('<script type="text/javascript">window.parent.location.href = "/";')
    else :
        form = EventStatusForm(request.POST)
    context = {'event_list': event_list,
               'event' : event,
               'form' : form,}
    return HttpResponse('<script type="text/javascript">window.parent.location.href = "/";')
<model.py>

class Event(models.Model):
    member_id = models.ForeignKey(Member, on_delete=models.CASCADE, db_column = 'member_id')
    event_type = models.IntegerField(default=0)
    room_name = models.CharField(max_length=20)
    heart_rate = models.IntegerField(default=0)
    breath_rate = models.IntegerField(default=0)
    event_status = models.IntegerField(default=0)
    event_time = models.DateTimeField(auto_now_add=True, blank=True)

    def __str__(self):
        return str(self.id)
<forms.py>
class EventStatusForm(forms.Form):

    class Meta:
        model = Event
        fields=('event_status',)

Существуют различные способы справиться с этим.

  1. Используйте форму в представлении деталей со скрытым полем и присвойте кнопке подтверждения в html роль submit. Когда форма будет отправлена, обработайте событие value switch в представлении подробностей и перенаправьте на главную страницу.

    .
  2. Определите другое представление (например, set_event) и соответствующий url. Кнопка подтверждения перенаправляет на новый url, передавая необходимые параметры. Затем обработайте переключение события в новом представлении и перенаправьте на главную страницу. Вам нужно будет позаботиться о правах доступа в новом представлении (проверить, разрешено ли пользователю совершать действия).

  3. Используйте AJAX для отправки данных и ссылку на кнопку подтверждения на главной странице.

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