Как добавить параметр, который проверяет, установлен ли флажок, и удаляет отмеченные объекты в Django - PullRequest
1 голос
/ 03 мая 2020

Здравствуйте, я новичок в 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)

окончательно мой шаблон:

image

И снова главная цель - иметь все CRUD в одном шаблоне без маршрутизации URL для каждого объекта. Во-вторых, опция «удалить по чеку».

Пожалуйста, если вы знаете ответ, не молчите. Был бы очень рад! Спасибо!

...