Показывать чекбокс в django marked при инстанцировании формы
У меня есть следующий код: views.py def actualizar_rutina(request, id_rutina): if not request.user.es_entrenador: messages.error(request, 'Usted no tiene permisos para acceder a esta pagina') return redirect('mostrar_rutina')
if request.method == 'GET':
rutina = get_object_or_404(Rutina, id=id_rutina)
rutinaform = RutinaForm(instance=rutina)
contexto = {
"rutinaform": rutinaform,
}
return render(request, 'core/crear_rutina.html', contexto)
else:
return HttpResponse('no se pudo actualizar')
Models.py
DIAS_SEMANA = [
('LUN', 'Lunes'),
('MAR', 'Martes'),
('MIE', 'Miércoles'),
('JUE', 'Jueves'),
('VIE', 'Viernes'),
('SAB', 'Sábado'),
('DOM', 'Domingo'),
]
class Rutina(models.Model):
nombre = models.CharField(blank=False)
dias_entrenamiento = models.CharField(blank=True)
dias_descanso=models.CharField(blank=True)
duracion_rutina = models.DurationField(default=datetime.timedelta(days=30), blank=True)
def __str__(self):
return self.nombre
form.py
class RutinaForm(forms.ModelForm):
class Meta:
model = Rutina
exclude = ('dias_descanso',)
dias_entrenamiento = forms.MultipleChoiceField(
choices=DIAS_SEMANA,
widget=forms.CheckboxSelectMultiple(),
required=False
)
Происходит так: когда я создаю форму, которая показывает html, поля (chekbox) не проверяются, они остаются пустыми, а я хочу, чтобы проверялись только те поля, которые должны быть созданы с экземпляром, который отправляет пользователь. Имейте в виду, что день тренировки сохраняется примерно так: training_days=['MON','TUE'] и т.д. Как я могу этого добиться? Спасибо
Я хочу, чтобы были установлены только те флажки, которые должны быть инстанцированы с экземпляром, отправленным пользователем.
Сделайте свой dias_entrenamiento
в виде JSONField
[Django-doc]:
def default_dias_entrenamiento():
return ['MON', 'TUE']
class Rutina(models.Model):
dias_entrenamiento = models.JSONField(default=default_dias_entrenamiento)
# …
Это позволяет нам сохранить список элементов в виде JSON-блоба, но при этом реконструировать его, что часто становится основной проблемой для получения элемента обратно.