Здравствуйте, я новичок в Django. Теперь я в замешательстве, думая о том, как работает django опция удаления панели администратора и как использовать эту опцию на моем сайте. Цель состоит в том, чтобы использовать все опции CRUD в одном шаблоне, а не только с URL-адресом, как удаление по одному.
У меня есть models.py:
GRADES = (
('1', '1',), ('2', '2',),
('3', '3',), ('4', '4',),
('5', '5',), ('6', '6',),
('7', '7',), ('8', '8',),
('9', '9',), ('10', '10',),
('11', '11',),
)
class Grade(models.Model):
grade = models.CharField(null=True, max_length=200,
choices=GRADES, unique=True)
def __str__(self):
return self.grade
class Unique_grade(models.Model):
grades = models.ForeignKey(
Grade,
null=True, on_delete=models.SET_NULL,
verbose_name="Sinf raqamini kiriting",
)
A_B_C = models.CharField(max_length=1, null=True,)
motto = models.TextField(max_length=200, null=True,
verbose_name='Shior', blank=True,
unique=True, default=None)
class Meta:
unique_together = ['grades', 'A_B_C']
def clean_motto(self):
if self.cleaned_data['motto'] == "":
return None
else:
return self.cleaned_data['motto']
def __str__(self):
return f"{self.grades}-{self.A_B_C}"
class Pupil(models.Model):
first_name = models.CharField(max_length=200, null=True)
surname = models.CharField(max_length=200, null=True)
date_of_birth = models.DateField(
null=True)
nation = models.CharField(
max_length=100, null=True, verbose_name="Nation")
grade = models.ForeignKey(Unique_grade, null=True,
on_delete=models.SET_NULL)
m_full_name = models.CharField(
max_length=200, null=True, verbose_name="Mother's full name")
f_full_name = models.CharField(
max_length=200, null=True, verbose_name="Father's full name")
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = [
['first_name', 'date_of_birth',
'surname', 'nation',
'grade', 'm_full_name',
'f_full_name'],
]
def __str__(self):
return f"{self.first_name} {self.surname}."
my forms.py:
class CreateUniqueGrade(ModelForm):
class Meta:
model = Unique_grade
fields = "__all__"
error_messages = {
NON_FIELD_ERRORS: {
'unique_together': "Bunday sinf mavjud!",
},
}
def clean_motto(self):
if self.cleaned_data['motto'] == "":
return None
else:
return self.cleaned_data['motto']
my views.py:
from .models import *
from .forms import CreateUniqueGrade
from datetime import date
current_year = date.today().year
grade_nums = Grade.objects.all()
unique_grades = Unique_grade.objects.all()
def home(request):
content = {'grades': grade_nums, 'unique_grades': unique_grades,
'current_year': current_year}
return render(request, 'accounts/dashboard.html/', content)
def grades(request, g):
# grades = Grade.objects.all()
cform = CreateUniqueGrade()
if request.method == "POST":
cform = CreateUniqueGrade(request.POST)
if cform.is_valid():
cform.save()
return redirect(f'/grades/{g}')
uni = Unique_grade.objects.all().get(id=g)
unique_grade = Unique_grade.objects.all()
content = {
'grade': unique_grade.filter(grades=g),
'grades': grade_nums,
'unique_grades': unique_grades,
'current_year': current_year,
'g': g,
'Unique': cform,
}
return render(request, 'accounts/grades.html/', content)
def pupils(request, g, p):
pupil = Pupil.objects.all()
content = {
'pupil': pupil.filter(grade_id=p),
'grades': grade_nums,
'unique_grades': unique_grades,
'current_year': current_year
}
return render(request, 'accounts/pupils.html/', content)
def about(request):
return render(request, 'accounts/about.html/', {'grades': grade_nums, 'unique_grades': unique_grades, 'current_year': current_year})
def for_each_pupil(request, g, p, for_each):
pupil = Pupil.objects.all()
content = {'pupil': pupil.get(id=for_each), 'grades': grade_nums,
'unique_grades': unique_grades, 'current_year': current_year}
return render(request, 'accounts/for_each_pupil.html/', content)
окончательно мой шаблон:
И снова главная цель - иметь все CRUD в одном шаблоне без маршрутизации URL для каждого объекта. Во-вторых, опция «удалить по чеку».
Пожалуйста, если вы знаете ответ, не молчите. Был бы очень рад! Спасибо!