У меня есть форма, в которой я проверяю в чистом методе, существует ли уже объект ProjectMembership, который имеет одинаковые значения для проекта и члена. Это связано с тем, что в модели ProjectMembership я определил ограничение unique_together для проекта и участника. Это прекрасно работает на самом деле.
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
Но теперь я спрашиваю себя, как я могу в чистом методе судить, пытается ли пользователь создать новые отношения или обновить отношения. Поскольку с этим чистым методом невозможно выполнить обновление, так как он возвращает сообщение об ошибке, что запись уже существует.