from django import forms from .models import Work class WorkCreateForm(forms.ModelForm): uploads = forms.FileField(label="PDFs to upload", widget=forms.ClearableFileInput(attrs={'multiple': True})) class Meta: model = Work fields = ['uploads', 'name', 'orchestration', 'running_time', 'notes'] class PlaylistAddForm(forms.Form): work = forms.ModelChoiceField(queryset=Work.objects.all()) def __init__(self, instance, *args, **kwargs): super(PlaylistAddForm, self).__init__(*args, **kwargs) existing = [ x[0] for x in instance.works.values_list('pk') ] qs = Work.objects.filter(ensemble_id=instance.ensemble_id).exclude(id__in=existing) self.fields['work'].queryset = qs self.instance = instance def save(self): self.instance.works.add(self.cleaned_data['work'])