This commit is contained in:
Ross
2021-02-05 17:12:13 +00:00
parent f1ebc48d9c
commit 1420d74393
9 changed files with 210 additions and 303 deletions
+46 -2
View File
@@ -90,6 +90,9 @@ class LongSeriesForm(ModelForm):
class LongForm(ModelForm):
exams = ModelMultipleChoiceField(required=False, queryset=Exam.objects.all(),widget=FilteredSelectMultiple(verbose_name="Exams", is_stacked=False))
class Media:
# Django also includes a few javascript files necessary
# for the operation of this form element. You need to
@@ -110,6 +113,16 @@ class LongForm(ModelForm):
# widget=FilteredSelectMultiple(verbose_name="Examination", is_stacked=False),
#)
if kwargs.get("instance"):
# We get the 'initial' keyword argument or initialize it
# as a dict if it didn't exist.
initial = kwargs.setdefault("initial", {})
# The widget for a ModelMultipleChoiceField expects
# a list of primary key for the selected data.
initial["exams"] = [t.pk for t in kwargs["instance"].exams.all()]
ModelForm.__init__(self, *args, **kwargs)
class Meta:
model = Long
# fields = ['due_back']
@@ -117,7 +130,16 @@ class LongForm(ModelForm):
fields = [
#"examination",
#"site",
"history",
"feedback",
"condition",
"sign",
"model_observations",
"model_interpretation",
"model_principle_diagnosis",
"model_differential_diagnosis",
"model_management",
"open_access",
]
# fields = ['question', 'feedback', 'subspecialty', 'references']
widgets = {
@@ -126,13 +148,35 @@ class LongForm(ModelForm):
# (False, 'No')])
}
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()
self.save_m2m()
return instance
SeriesFormSet = inlineformset_factory(
Long,
LongSeries,
exclude=[],
can_delete=True,
extra=4,
extra=1,
max_num=10,
field_classes="testing",
)
@@ -143,7 +187,7 @@ LongSeriesImageFormSet = inlineformset_factory(
LongSeriesImage,
exclude=[],
can_delete=True,
extra=4,
extra=1,
max_num=2000,
field_classes="testing",
)