Django: Обновление одних данных из базы данных

У меня есть два html файла для посещаемости_входа и выхода, простые формы. Если я хочу пробить посещаемость, данные были созданы (begin_time). Мне трудно обновить время окончания (end_time). Вот мой код.

models.py

class Attendance(models.Model):
    begin_time = models.TimeField(verbose_name="in")
    end_time = models.TimeField(verbose_name="out")

views.py

def attendance_in(request):
    if request.method == 'GET':
        return render(request, 'attendance_in.html')
    if request.method =='POST':
        begin_time = request.POST.get('begin_time')
        Attendance.objects.create(begin_time=begin_time,)
        return redirect('/user/attendance/out')

def attendance_out(request):
    if request.method == 'GET':
        return render(request, 'attendance_out.html')
    if request.method =='POST':
      .......

urls.py

urlpatterns = [
    path('attendance/in/', views.attendance_in),
    path('attendance/out/', views.attendance_out),
]

Посещаемость_время работает. Но я не уверен, как обновить время окончания_времени.

просто вы можете сделать вот так:

   record = Record.objects.get(id=1)
   record.name = "new record name"
   record.save(update_fields=['name'])

Таким образом можно обновить одно поле.

Поле обновления должно находиться внутри метода save()

Вам нужен идентификатор объекта посещаемости, который создается с помощью begin_time, чтобы вы могли обновить end_time этого объекта.

Таким образом, url для посещаемости будет выглядеть следующим образом.

path('attendance/<int:pk>/out/', views.attendance_out)

Теперь в просмотре

def attendance_out(request, pk):
    from django.utils import timezone
    from django.shortcuts import get_object_or_404, redirect 

    attendance = get_object_or_404(Attendance, pk=pk)
    if request.method =='POST':
      attendance.end_time = timezone.now()
      attendance.save()
      return redirect("/")
    return render(request, 'attendance_out.html')
Вернуться на верх