Django изменение объекта базы данных

Я работаю над системой управления посещаемостью. Я хочу изменить посещаемость студентов.

class Subject(models.Model):
    subject_name = models.CharField(max_length=20)
    #attendance = models.ForeignKey(Attendance, on_delete = models.DO_NOTHING)
    attendance = models.IntegerField(default=0)
    def __str__(self):
        return self.subject_name


class Section(models.Model):
    section_name = models.CharField(max_length=20)
    subject = models.ManyToManyField(Subject)
    def __str__(self):
        return self.section_name


class Student(models.Model):
    rollno = models.IntegerField()
    name = models.CharField(max_length=20)
    section = models.ForeignKey(Section, on_delete = models.DO_NOTHING, default=0)
    def __str__(self):
        return str(self.rollno) + self.name 

Вот мой шаблон. (Student.html)

{% for i in data %}  
                <tr>
                    <td>{{ i.rollno }}</td>
                    <td>{{ i.name }}</td>
                    <td> <button class='btn btn-danger' id='{{i.rollno}}' on click = "{{ i.section.subject.get(subject_name='java').attendance)|add:1 }}"> 
                    </td>
                </tr>
{% endfor %}

Я получаю сообщение об ошибке при использовании метода .get () в шаблоне. Я хочу добавить (+1) посещаемость одним нажатием кнопки.

Но это совсем не то, что вы можете сделать в шаблоне, даже если оставить в стороне проблемы с синтаксисом. Подобные вещи нужно делать в представлении.

Daniel Roseman 07.07.2018 10:10

Спасибо за ответ. Помогите, пожалуйста. Что и как должно передаваться во вьюху в качестве аргумента? Я новичок в django. @DanielRoseman

Dev Pahuja 07.07.2018 10:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я настоятельно рекомендую пройти Учебник по Django. Вы изучите концепции Django MVC и сможете легко добиться того, о чем просили. Приведенный ниже код поможет вам начать работу.

views.py

def increment_attendance(request, subject_id):
  """Increment Attendance for a Subject"""

    subject = Subject.objects.get(id=subject_id)
    # check if record exists
    if not subject:
        raise Http404("Invalid subject_id")

    # can also use only get_object_or_404(Subject, pk=subject_id)

    # increment attendance
    subject.attendance += 1
    # save / commit to database
    subject.save()

    # redirec to 'some' page or previous page?
    return redirect('top')

добавьте этот путь в свой urls.py

  path('subject/<int:day>/increment_attendance', views.increment_attendance, name='increment_attendance')

шаблон

  <a class = "btn btn-danger" id = "{{i.rollno}}" href = "{% url 'increment_attendance' subject_id=subject_id" %}"></a>

Спасибо @Zekoi. Прокомментируйте, пожалуйста, мой models.py. Это мой первый проект, и я не уверен в своей базе данных.

Dev Pahuja 07.07.2018 16:27

Другие вопросы по теме