class ProjectForm(forms.ModelForm): helper = FormHelper() helper.add_input(Submit('submit', 'Submit')) helper.form_class = 'form-horizontal' tags = TagField() class Meta: model = Project exclude = ("audios", )
class UserProfileForm(ModelForm): tags = TagField( label=_('hashtags').capitalize(), required=False, help_text=_( "put tags helps you to contact users who share musical tastes")) helper = FormHelper() helper.add_input(Submit('submit', 'Submit')) class Meta: model = UserProfile fields = [ 'realname', 'about', 'website', 'location', "tags", ]
class AudioForm(forms.ModelForm): tags = TagField(required=False) project = forms.ModelChoiceField(Project.objects.all(), required=False) audio = forms.FileField(label=_("Audio"), help_text=_("Allowed extensions: %s") % ", ".join(AUDIO_EXTENSIONS)) helper = FormHelper() helper.form_class = 'form-horizontal' helper.add_input(Submit('submit', 'Submit')) class Meta: model = Audio widgets = { 'license': forms.RadioSelect, } fields = '__all__' def __init__(self, data=None, *args, **kwargs): user = kwargs.pop('user') super(AudioForm, self).__init__(data, *args, **kwargs) self.instance.user = user initial_project = self.instance.project_set.all()[0] if self.instance.pk and \ self.instance.project_set.all() else None self.fields['project'] = forms.ModelChoiceField( queryset=Project.objects.filter(user=user), initial=initial_project, required=False) def clean_audio(self): f = self.cleaned_data.get('audio', False) if not f: raise ValidationError(_("Couldn't read uploaded file")) if not get_file_extension(f.name) in AUDIO_EXTENSIONS: raise ValidationError(_("Invalid audio file extension")) return f
class SnapshotAdminForm(forms.ModelForm): tags = TagField(required=False) class Meta: model = Snapshot fields = "__all__" def save(self, commit=True): # Based on: https://stackoverflow.com/a/49933068/3509554 # Get the unsave instance instance = forms.ModelForm.save(self, False) tags = self.cleaned_data.pop("tags") #update save_m2m def new_save_m2m(): instance.save_tags(tags) # Do we need to save all changes now? self.save_m2m = new_save_m2m if commit: instance.save() return instance