Generi c Класс: UpdateView и DeleteView не сохраняют данные обратно в модель - PullRequest
1 голос
/ 19 февраля 2020

UpdateView и DeleteView не сохраняют данные обратно в модель

views.py

class ProjectList(ListView):
    model = Project
    template_name = 'mainapp/browse_app.html'
    context_object_name = 'projs'

class ProjectUpdate(UpdateView):
    model = Project
    fields = ['pname','desc','emailID']
    template_name = 'mainapp/project_form_edit.html'

class ProjectDelete(DeleteView):
    model = Project
    fields = ['id','pname','desc','emailID','updated_on']
    template_name = 'mainapp/index.html'
    success_url = reverse_lazy('mainapp/projs')

def form_display(request):
    data = Project.objects.all()
    return render(request,'mainapp/browse_page.html',{'data':data})
...

browse_page. html: имеет ссылку для редактирования и кнопку удаления, и он отображает проект информация о проекте, по которому щелкают

{% for i in data %}
    <center>
      <a href="#costumModal13{{ forloop.counter }}" role="button" class="btn btn-default" data-toggle="modal">{{ i }}</a>
    </center>
      <!-- Modal -->
      <div id="costumModal13{{ forloop.counter }}" class="modal" data-easein="bounceLeftIn"  tabindex="-1" role="dialog" aria-labelledby="costumModalLabel" aria-hidden="true">
        <a class="btn btn-info btn-lg fa fa-pencil-square-o" href="{% url 'project_edit' pk=i.id %}" aria-hidden="true">Edit</a>
            <form method="POST" action="{% url 'project_del' pk=i.id %}">
                {% csrf_token %}<input type="submit" value="Delete">
            </form>
            {{ i.pname }}
            {{ i.id }}
            {{ i.updated_on }}
      </div>
{% endfor %}

urls.py

from django.contrib import admin
from django.urls import path, include, re_path
from mainapp import views
from mainapp.views import ProjectUpdate, ProjectDelete

app_name = 'mainapp'
urlpatterns = [
    path('browse/',views.form_display,name="browse_page"),
    re_path(r'^browse/(?P<pk>\d+)/$', ProjectUpdate.as_view(), name='project_edit'),
    re_path(r'^browse/delete/(?P<pk>\d+)/$', ProjectDelete.as_view(), name='project_del'),
]

При отправке отредактированной формы: При нажатии на кнопку удаления:

Можете ли вы помочь мне решить эти 2 ошибки?

1 Ответ

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

1-я проблема с изображением:

URL имеет индекс. html, добавленный в конец. Ваш URL определен как /browse/7/

2-я проблема с изображением:

Разделитель пространства имен равен :, а не /.

class ProjectDelete(DeleteView):
    ...
    success_url = reverse_lazy('mainapp:projs')
...