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, много перечитал, но не выходит