I have a form where I check in a clean method whether a ProjectMembership object exists that has the same values ββfor the project and member. This is because in the ProjectMembership model I defined a unique_together constraint for the project and member. Actually this works great.
class ProjectMembershipForm(forms.ModelForm): project = forms.ModelChoiceField(Project.objects, widget=HiddenInput()) class Meta: model = ProjectMembership def clean(self): cleaned_data = self.cleaned_data project = cleaned_data.get("project") member = cleaned_data.get("member") print ProjectMembership.objects.filter(project=project, member=member).count() if ProjectMembership.objects.filter(project=project, member=member).count() > 0: del cleaned_data["project"] del cleaned_data["member"] raise forms.ValidationError('The user "%s" is already part of the project team for project "%s".' % (member, project)) return cleaned_data
But now I ask myself how can I judge by a pure method whether the user is trying to create a new relationship or update the relationship. Because using this clean method, it is not possible to perform an update because it returns an error message that the record already exists.
django-forms
Thomas kremmel
source share