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')