Как изменить значение поля Django после отправки формы?
Недавно начал изучать Django и нужна помощь с формой.
Есть модель для записи на консультацию
from django.db import models
class Category(models.Model): # Класс для категорий обращений
cat_name = models.CharField(max_length=64, verbose_name='Категория') # Имя категории
class Meta:
verbose_name = 'Категории'
verbose_name_plural = 'Категории'
def __str__(self):
return self.cat_name
class FreeDateTime(models.Model): # Класс для внесения свободного времени
free_times = models.CharField(max_length=64, verbose_name='Свободное время') # Свободное время
reserved_status = models.BooleanField(default=False) # Проверка занятости
class Meta:
verbose_name = 'Свободное время'
verbose_name_plural = 'Свободное время'
def __str__(self):
return "%s" % (self.free_times)
class Consult(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, max_length=120, verbose_name='Категория')
date_time = models.CharField(max_length=20, verbose_name='Дата и время') # Время для записи
fcs = models.CharField(max_length=120, verbose_name='ФИО') # ФИО
phone = models.CharField(max_length=12, verbose_name='Телефон для связи') # Телефон для связи
description = models.CharField(max_length=1000, verbose_name='Описание проблемы') # Описание проблемы
class Meta:
verbose_name = 'Активные записи'
verbose_name_plural = 'Записи на консультацию'
def __str__(self):
return "%s" % (self.description)
Вьюха для неё
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib import messages
from .forms import ConsultForm
def get_data(request):
if request.method == "POST":
consult_form = ConsultForm(request.POST)
if consult_form.is_valid():
consult_form.save() # Сохранение формы
# Показываем сообщние после отправки формы
messages.success(request, "Спасибо за обращение. Наши специалисты свяжутся с Вами в ближайшее время")
consult_form = ConsultForm()
context = {
'form': consult_form,
}
return render(request, "consultations/consult_form.html", context)
и файл forms.py
from django import forms
from django.forms import Textarea
from .models import Consult, Category, FreeDateTime
class ConsultForm(forms.ModelForm):
# определяем поля с выбором
category = forms.ModelChoiceField(queryset = Category.objects.all(), empty_label="Выберите категорию обращения", widget=forms.Select(attrs={'class':'dropdown'}), label='Категория обращения')
# Выводим только значения с reserved_status = False
date_time = forms.ModelChoiceField(queryset = FreeDateTime.objects.filter(reserved_status=False), empty_label="Выберите время", widget=forms.Select(attrs={'class':'dropdown'}), label='Дата и время')
class Meta:
model = Consult
fields = "__all__" # Выводим все поля
# Регистрируем поле описания обращения как виджет
widgets = {
'description': Textarea (
attrs = {
'placeholder': 'Кратко опишите суть Вашего обращения'
}
)
}
Как сделать так, чтобы при отправке формы у выбранного пользователем пункта списка со свободным временем значение reserved_status менялось с False на True?