Как ввести массив в django html
Я новичок в django. Хочу сделать сайт для изменения таблиц в базе данных. Должно быть реализовано изменение, удаление, добавление записи. Проблема в том, что один из параметров таблицы Array и я не знаю как сделать его ввод. Я пытался сделать это через ввод текста, но у меня ничего не получилось
Вот мой код
forms.py
from .models import dj_ksg_p
from django.forms import ModelForm, TextInput
class KSGForms(ModelForm):
class Meta:
model=dj_ksg_p
fields=['id','name','c_prof','smj_prof','KSG']
widgets={
"id": TextInput(attrs={
'class':'from-control',
'placeholder':'Id'
}),
"name": TextInput(attrs={
'class': 'from-control',
'placeholder': 'Название МО'
}),
"c_prof": TextInput(attrs={
'class': 'from-control',
'placeholder': 'Профиль'
}),
"smj_prof": TextInput(attrs={
'class': 'from-control',
'placeholder': 'Смежный профиль'
}),
"KSG": TextInput(attrs={
'class': 'from-control',
'placeholder': 'КСГ'
})
}
views.py
from django.shortcuts import render,redirect
from django.views.generic.list import ListView
from django.views.generic import DetailView, UpdateView,DeleteView
from django.http import HttpResponse
from .models import dj_ksg_p
from rest_framework import viewsets
from .forms import KSGForms
\#from .serializers import HeroSerializer
class KSGView(ListView):
model = dj_ksg_p
template_name = 'ksg/kss.html'
queryset = dj_ksg_p.objects.all()
class NewDataView(DetailView):
model = dj_ksg_p
template_name = 'ksg/create.html'
context_object_name = 'dj_ksg_p'
class DeleteKSG(DeleteView):
model = dj_ksg_p
template_name = 'ksg/delete.html'
success_url = '/ksg/'
class NewUpdateView(UpdateView):
model=dj_ksg_p
template_name = 'ksg/detail_view.html'
fields = \['id','name','c_prof','smj_prof','KSG'\]
form_class=dj_ksg_p
def create(request):
error = ''
if request.method =='POST':
form= KSGForms(request.POST)
if form.is_valid():
form.save()
\#redirect()#Перенос
else:
error='Форма заполнения неверная'
form=KSGForms()
data={
'form':form,
'error':error
}
return render(request,'ksg/create.html',data)
models.py
from cleb import settings
import psycopg2
from psycopg2 import Error
from django.db import connection
from django.contrib.postgres.fields import ArrayField
class dj_ksg_p(models.Model):
id=models.IntegerField(primary_key=True, serialize=True, unique=True)
name=models.TextField()
c_prof=models.IntegerField()
smj_prof=ArrayField(
models.IntegerField()
)
KSG=models.CharField(max_length=255)
#def __str__(self):
#return self.s
def get_absolute_url(self):
return f'ksg/{self.id}'
class Meta:
db_table='ksg_p'
kss.html
{% load static%}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{% static 'ksg/css/ksg.css' %}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/fontawesome.min.css">
</head>
<body>
<table>
<colgroup>
<col span="2" style="background:Khaki"><!-- С помощью этой конструкции задаем цвет фона для первых двух столбцов таблицы-->
<col style="background-color:LightCyan"><!-- Задаем цвет фона для следующего (одного) столбца таблицы-->
<col style="background-color:Khaki">
</colgroup>
<!-- <tbody>-->
<caption>Профили</caption>
<tr>
<th>ID</th>
<th>Name</th>
<th>C_PROF</th>
<th>smj_prof</th>
<th>KSG</th>
</tr>
{% for serv in object_list %}
<tr>
<td>{{ serv.id }}</td>
<td>{{ serv.name }}</td>
<td>{{ serv.c_prof }} </td>
<td>{{ serv.smj_prof}}</td>
<td>{{ serv.KSG }}</td>
<td><a href="{% url 'create' %}"><button class="btn btn-info">Добавить запись</button></a></td>
<td><a href="{% url 'ksg_detail' serv.id %}" class="btn btn-warning">Изменить</a></td>
<td><a href="{% url 'ksg_delete' serv.id %}" class="btn btn-info">Удалить</a></td>
</tr>
{% endfor %}
<!-- ><i class="fas fa-plus-circle"> </tbody>-->
</table>
</body>
</html>
create.html
{% load static%}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{% static 'ksg/css/ksg.css' %}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/fontawesome.min.css">
</head>
<body>
<div class="features">
<h1>Форма добавления записи</h1>
<form method="post">
{% csrf_token %}<br>
{{form.id}}<br>
{{form.name}}<br>
{{form.c_prof}}<br>
{{form.smj_prof}<br>
{{form.KSG}}<br>
<span>{{error}}</span>
<button class="btn btn-success" type="submit">Добавить статью</button>
</form>
</div>
</body>
</html>
вот как выглядит мой сайт таблица с кнопками добавление/обновление колонки
Вы забыли упомянуть "action" в теге "form", который определяет представление, которое должно быть выполнено. Ниже приведен пример отправки формы в django с использованием представлений на основе функций, следуйте этому подходу, пожалуйста, не копируйте код.