удалить и элемент из списка через модальные - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь удалить элементы из списка адресов через модал. Проблема в том, что я не могу удалить выбранный адрес из списка. он всегда удаляет первый.

Шаблон:

{% extends 'base.html' %}

{% block content %}

<main class="login-page">
    <div class="contact signin address-list" id="book-table">
        <div class="titulos">
            <p>Domicilios</p>

            <button class="btn btn-secondary" type="button">
                <a href="{% url "main:address_create" %}"><i class="fas fa-plus"></i></a>
            </button>
        </div>   
        {% for address in object_list %}
        <div class="crud"> 
            <div>
                <p class="details">{{ address.name }}</p>
                <p class="details">{{ address.address1 }} ({{ address.zip_code }})</p>
                <p class="details">{{ address.phone }}</p>
                <p class="details">{{ address.city }}</p>
                <p class="details">{{ address.get_country_display}}</p>    
            </div>

            <div>
                <button class="btn btn-info" type="button">
                    <a href="{% url "main:address_update" address.id %}"><i class="fas fa-pen"></i></a>
                </button>

                <button class="btn btn-danger" type="button">
                    <a href="{% url "main:address_delete" address.id %}" class="confirm-delete" data-toggle="modal" data-target="#confirmDeleteModal"><i class="fas fa-trash-alt"></i>
                    </a>
                </button>

                <div class="modal fade" id="confirmDeleteModal" tabindex="-1" role="dialog" 
                aria-labelledby="confirmDeleteModal" aria-hidden="true">
                    <div class="modal-dialog" role="document">
                        <div class="modal-content">
                            <div class="modal-body confirm-delete">
                                ¿Está seguro de eliminar la dirección {{ address.address1 }}?
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-secondary" data-dismiss="modal" data-target="modal">Cancelar</button>
                                <form  method="POST" action="{% url "main:address_delete" address.id %}">
                                        {% csrf_token %}
                                    <button type="submit" class="btn btn-danger">Eliminar</a>
                                </button>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        {% if not forloop.last %}<hr style="display: block">{% endif %}
        {% endfor %}
    </div>
</main>

{% endblock content %}

Кнопка, которая запускает модальный режим, работает нормально (цель id верна):

<button class="btn btn-danger" type="button">
    <a href="{% url "main:address_delete" address.id %}" class="confirm-delete" 
      data-toggle="modal" data-target="#confirmDeleteModal"><i class="fas fa-trash-alt"></i>
    </a>
</button>

Но текст и кнопка внутри модального окна всегда нацелены на первый адрес списка ...

¿Está seguro de eliminar la dirección {{ address.address1 }}?

<button type="button" class="btn btn-secondary" data-dismiss="modal" data-target="modal">Cancelar</button>
    <form  method="POST" action="{% url "main:address_delete" address.id %}">
        {% csrf_token %}
        <button type="submit" class="btn btn-danger">Eliminar</a></button>
</button>

Полагаю, мне нужно добавить какой-нибудь код JS к каким-то образом отправьте идентификатор с кнопки, которая запускает модальный режим, но я, честно говоря, не знаю, является ли это решением или я делаю что-то не так в текущем коде.

Любая помощь будет оценена! ! Спасибо

Просмотров:

class AddressCreateView(LoginRequiredMixin,CreateView):
    model = models.Address

    fields = ['name', 'address1', 'phone', 'zip_code', 'city', 'country']

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.user = self.request.user
        obj.save()
        return super().form_valid(form)

class AddressUpdateView(LoginRequiredMixin,UpdateView):
    model = models.Address

    fields = ['name', 'address1', 'phone', 'zip_code', 'city', 'country']

    success_url = reverse_lazy('main:address_list')

    def get_queryset(self):
        return self.model.objects.filter(user=self.request.user)

class AddressDeleteView(LoginRequiredMixin,DeleteView):
    model = models.Address
    success_url = reverse_lazy('main:address_list')

    def get_queryset(self):
        return self.model.objects.filter(user=self.request.user)

URL-адреса:

path('address/', views.AddressListView.as_view(), name='address_list'),
path('address/create/', views.AddressCreateView.as_view(), name='address_create'),
path('address/<int:pk>/', views.AddressUpdateView.as_view(), name='address_update'),
path('address/<int:pk>/delete/', views.AddressDeleteView.as_view(), name='address_delete'),

1 Ответ

0 голосов
/ 26 февраля 2020

пожалуйста, добавьте ваш URL и просмотрите функции

...