diff --git a/computers/forms.py b/computers/forms.py index cd9a57f..b8fce80 100644 --- a/computers/forms.py +++ b/computers/forms.py @@ -4,6 +4,7 @@ from core import utils from computers.models import Computer from computers.models import ComputerCpuRelation +from computers.models import ComputerRamRelation from devices.models import Warranty @@ -69,3 +70,16 @@ CpuFormSet = forms.inlineformset_factory(Computer, can_delete=False, form=ComputerUpdateForm, max_num=1) + + +RamFormSet = forms.inlineformset_factory(Computer, + ComputerRamRelation, + fields=( + 'ram', + 'computer', + 'amount', + ), + exclude=[], + can_delete=False, + form=ComputerUpdateForm, + max_num=1) diff --git a/computers/templates/computers/computer_update.html b/computers/templates/computers/computer_update.html index 4f0bfba..c8528a5 100644 --- a/computers/templates/computers/computer_update.html +++ b/computers/templates/computers/computer_update.html @@ -19,6 +19,16 @@ {{ computer_formset|crispy }} +
+
+ {{ cpu_formset|crispy }} +
+
+
+
+ {{ ram_formset|crispy }} +
+

diff --git a/computers/views.py b/computers/views.py index 9c5159f..b5b615c 100644 --- a/computers/views.py +++ b/computers/views.py @@ -22,6 +22,7 @@ from .filters import ComputerFilter from .forms import ComputerCreateForm from .forms import ComputerFormSet from .forms import CpuFormSet +from .forms import RamFormSet from .models import Computer from .models import ComputerCpuRelation from .models import ComputerDiskRelation @@ -149,21 +150,31 @@ class ComputerUpdateView(LoginRequiredMixin, UpdateView): self.request.POST, instance=self.object) context['cpu_formset'].full_clean() + context['ram_formset'] = RamFormSet( + self.request.POST, + instance=self.object) + context['ram_formset'].full_clean() else: context['computer_formset'] = ComputerFormSet(instance=self.object) context['cpu_formset'] = CpuFormSet(instance=self.object) + context['ram_formset'] = RamFormSet(instance=self.object) return context def form_valid(self, form): context = self.get_context_data(form=form) computer_formset = context['computer_formset'] cpu_formset = context['cpu_formset'] - if computer_formset.is_valid() and cpu_formset.is_valid(): + ram_formset = context['ram_formset'] + if (computer_formset.is_valid() + and cpu_formset.is_valid() + and ram_formset.is_valid()): response = super().form_valid(form) computer_formset.instance = self.object computer_formset.save() cpu_formset.instance = self.object cpu_formset.save() + ram_formset.instance = self.object + ram_formset.save() return response else: return super().form_invalid(form)