diff --git a/anatomy/forms.py b/anatomy/forms.py index a0eee0a2..b749719f 100644 --- a/anatomy/forms.py +++ b/anatomy/forms.py @@ -122,11 +122,12 @@ class AnatomyQuestionForm(ModelForm): new_exams = self.cleaned_data["exams"] for exam in old_exams: - if exam in new_exams: - exam.exam_questions.add(instance) - else: + if exam not in new_exams: exam.exam_questions.remove(instance) + for exam in new_exams: + exam.exam_questions.add(instance) + self.save_m2m() return instance diff --git a/longs/forms.py b/longs/forms.py index 39f89296..9120ef4a 100755 --- a/longs/forms.py +++ b/longs/forms.py @@ -227,24 +227,19 @@ class LongForm(ModelForm): } def save(self, commit=True): - # Get the unsaved Long instance instance = ModelForm.save(self, False) - - # Prepare a 'save_m2m' method for the form, - old_save_m2m = self.save_m2m - - def save_m2m(): - old_save_m2m() - instance.exams.clear() - for exam in self.cleaned_data["exams"]: - # We need the id here - instance.exams.add(exam.pk) - - self.save_m2m = save_m2m - - # Do we need to save all changes now? - # if commit: instance.save() + + old_exams = instance.exams.all() + + new_exams = self.cleaned_data["exams"] + + for exam in old_exams: + if exam not in new_exams: + exam.exam_questions.remove(instance) + + for exam in new_exams: + exam.exam_questions.add(instance) self.save_m2m() return instance