UpdateView обновить данные в БД при помощи ajax

view.py

from django.http import HttpResponse, JsonResponse

from django.views.generic import DetailView, UpdateView, DeleteView
from django.shortcuts import render
from django.urls import reverse_lazy
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate
from django.utils import timezone
from .forms import *
from datetime import datetime, timedelta

from .models import Plan
from .models import Artiles
from .forms import ArtilesForm
class NewUpdateView(UpdateView):
model = Plan
template_name = 'news/create.html'

form_class = ArtilesForm
class NewDeleteView(DeleteView):
    model = Plan
    success_url = '/news/'
    template_name = 'news/delete.html'



def create(request):
    #username = request.user.groups.all

    if request.user.groups.filter(name='nachalnik').exists():
    error = ''
    if request.method == 'POST':
        form = ArtilesForm_1(request.POST, request.FILES)
        if form.is_valid():
            form.save()
        else:
            error = 'Форма не верная!'
    form = ArtilesForm_1()

    data = {
        'form': form,
        'error': error
    }


    return render(request, 'news/create.html', data)
else:
    error = ''
    if request.method == 'POST':
        form = ArtilesForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
        else:
            error = 'Форма не верная!'
    form = ArtilesForm()

    data = {
        'form': form,
        'error': error
    }


    return render(request, 'news/create.html', data)

form.py

from .models import Plan
from django import forms
from django.forms import ModelForm,Select, TextInput, DateTimeInput,Textarea,     ClearableFileInput, DateInput

class AddPostForm(forms.Form):
    ot = forms.CharField(widget=forms.DateInput(attrs={'class': 'form-input','type': 'date'}), label="Дата от")
    do = forms.CharField(widget=forms.DateInput(attrs={'class': 'form-input','type': 'date'}), label="Дата до")


class ArtilesForm(ModelForm):
    class Meta:
        model = Plan
        fields = ['title','anons', 'full_text', 'plan', 'fact', 'slujba', 'data', 'ispolnitel', 'status', 'prim']#, 'podt']
    #data = forms.DateField(widget=widgets.AdminDateWidget)
    widgets = {
        "title": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'ФИО ответственного'
        }),
        "anons": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Объект'
        }),
        "full_text": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Вид работ'
        }),
        "plan": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Объем работ план'
        }),
        "fact": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Объем работ факт'
        }),
        "slujba": Select(attrs={
            'class': 'form-control',
            'placeholder': 'Служба'
        }),
        "data": TextInput(attrs={
            'type': 'date',
            'class': 'form-control',
            'placeholder': 'Дата'
        }),
        "ispolnitel": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'ФИО исполнителя'
        }),
        "status": Select(attrs={
            'class': 'form-control',
            'placeholder': 'Статус'
        }),
        "prim": TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Примечание'
        }),
        # "podt": TextInput(attrs={
        #     'class': 'form-control',
        #     'placeholder': ''
        # }),

    }

urls.py

from django.urls import path
from . import views

urlpatterns = [

path('', views.news_home, name='news_home'),
path('create', views.create, name='create'),
path('<int:pk>', views.NewDetailView.as_view(),name='news-detail'),
path('<int:pk>/update', views.NewUpdateView.as_view(), name='news-update'),
path('<int:pk>/update_1', views.NewUpdateView_1.as_view(), name='news-update_1'),
path('<int:pk>/delete', views.NewDeleteView.as_view(), name='news-delete')

]

news_home.html

{% extends 'main/base.html' %}
{% load static %}

{% block title %} Задания {% endblock %}

{% block content %}
<div class="features">
<form action="{% url 'news_home' %}"   method="post">
{% csrf_token %}
<div class="form-error">{{ form.non_field_errors }}</div>
<p><label for="form-label" for="{{form.ot.id_for_label}}">{{form.ot.label}}:</label>{{form.ot}}</p>
<!-- <p><div class="form-error">{{form.ot.errors}}</div></p> -->
<p><label for="form-label" for="{{form.do.id_for_label}}">{{form.do.label}}:</label>{{form.do}}</p>
<!-- <p><div class="form-error">{{form.do.errors}}</div></p> -->
<p><label><button type="submit" name="filt_tab" class="btn btn-link">Отфильтровать</button></label></p>
{% if user.username == 'superuser' %}
<p><label><button type="submit" name="filt_pdf_plan" class="btn btn-link">План в pdf</button></label></p>
<p><label><button type="submit" name="filt_pdf_otchet" class="btn btn-link">Отчет в pdf</button></label></p>
{% else %}
{% endif %}
 <!-- <div class="features"> -->
 <!-- <div class="header-h1">
 <h1>Задания</h1></div> -->


  <!-- <div style="overflow-y: auto;  overflow-x: auto; height: 800px;"> -->
  <!-- <div class="table-responsive"> -->


 {% for group in user.groups.all %}
 {% if group.name == 'nachalnik' %}
    



 <table class="table  table-hover table-sm">
  <thead>
  <tr>
    <th>ФИО ответственного</th>
    <th>Объект</th>
    <th>Вид работ</th>
    <th>Объем работ план</th>
    <th>Объем работ факт</th>
    <th>Служба</th>
    <th>Дата</th>
    <th>ФИО исполнителя</th>
    <th>Статус</th>
    <th>Примечание</th>
    <th>Подтверждение</th>
    <th></th>
    <th></th>
  </tr></thead>
 {% if news %}
 {% for el in news %}
  <tbody>
  <tr>
    <td>{{ el.title }}</td>
    <td>{{ el.anons}}</td>
    <td>{{ el.full_text }}</td>
    <td>{{ el.plan}}</td>
    <td>{{ el.fact}}</td>
    <td>{{ el.slujba}}</td>
    <td>{{ el.data}}</td>
    <td>{{ el.ispolnitel}}</td>
    <td>{{ el.status}}</td>
    <td>{{ el.prim}}</td>
    <td>{{ el.podt}}</td>
    <td><a href="{% url 'news-delete' el.id %}"><img src="{% static 'main/img/trashh.svg' %}"></a></td>
    <td><a href="{% url 'news-update_1' el.id %}"><img src="{% static 'main/img/karandash.png' %}"></a></td>

  </tr></tbody>
 {% endfor %}
 </table>
 {% else %}
 <div class="features">
<div class="title">
<h1>Нет записей!</h1></div></div>
{% endif %}
{% else %}
<table class="table  table-hover table-sm">
  <thead>
  <tr>
    <th>ФИО ответственного</th>
    <th>Объект</th>
    <th>Вид работ</th>
    <th>Объем работ план</th>
    <th>Объем работ факт</th>
    <th>Служба</th>
    <th>Дата</th>
    <th>ФИО исполнителя</th>
    <th>Статус</th>
    <th>Примечание</th>
    
    <th></th>
    <th></th>
  </tr></thead>
  {% if news %}
  {% for el in news %}
  <tbody>
  <tr>
    <td>{{ el.title }}</td>
    <td>{{ el.anons}}</td>
    <td>{{ el.full_text }}</td>
    <td>{{ el.plan}}</td>
    <td>{{ el.fact}}</td>
    <td>{{ el.slujba}}</td>
    <td>{{ el.data}}</td>
    <td>{{ el.ispolnitel}}</td>
    <td>{{ el.status}}</td>
    <td>{{ el.prim}}</td>
    
    <td><a href="{% url 'news-delete' el.id %}"><img src="{% static 'main/img/trashh.svg' %}"></a></td>
    <td><a href="{% url 'news-update' el.id %}"><img src="{% static 'main/img/karandash.png' %}"></a></td>

  </tr></tbody>
  {% endfor %}
  </table>
  {% else %}
  <div class="features">
 <div class="title">
 <h1>Нет записей!</h1></div></div>
 {% endif %}
 {% endif %}
 {% endfor %}
 {% endblock %}

как сделать, чтоб обновлять можно было через ajax, много перечитал, но не выходит

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