from django import forms from django.forms.models import modelformset_factory from aircox import models from .page import ChildPageForm __all__ = ("EpisodeForm", "EpisodeSoundFormSet") class EpisodeForm(ChildPageForm): class Meta: model = models.Episode fields = ChildPageForm.Meta.fields class EpisodeSoundForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if "instance" in kwargs: """Limit available sounds.""" episode_sounds = kwargs["instance"].episode.episodesound_set.all() self.fields["sound"].queryset = models.Sound.objects.filter(id__in=[x.sound.id for x in episode_sounds]) EpisodeSoundFormSet = modelformset_factory( models.EpisodeSound, form=EpisodeSoundForm, fields=( "position", "episode", "sound", "broadcast", ), widgets={ "broadcast": forms.CheckboxInput(), "episode": forms.HiddenInput(), # "sound": forms.HiddenInput(), "position": forms.HiddenInput(), }, can_delete=True, extra=0, ) """Formset used in EpisodeUpdateView."""