# forms.py from django import forms from .models import Person, UserAccount class PersonForm(forms.ModelForm): class Meta: model = Person fields = ['vorname', 'nachname', 'geburtsdatum', 'aktiv'] widgets = { 'geburtsdatum': forms.DateInput(attrs={'type': 'date'}), } class AccountForm(forms.ModelForm): password=forms.CharField(widget=forms.PasswordInput(), required=False) confirm_password=forms.CharField(widget=forms.PasswordInput(), required=False) class Meta: model = UserAccount fields = ['username', 'password', 'role'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if self.instance.pk is None: self.fields['password'].required=True self.fields['confirm_password'].required=True def clean(self): cleaned_data = super(AccountForm, self).clean() passwordStr = cleaned_data.get("password") confirm_passwordStr = cleaned_data.get("confirm_password") if passwordStr != confirm_passwordStr: raise forms.ValidateError("password and confirm_password does not match") def save(self, commit=True): user = super().save(commit=False) pw = self.cleaned_data.get("password") if pw: user.set_password(pw) if commit: user.save() return user