add RamFormSet

This commit is contained in:
Andreas Zweili 2020-03-17 23:03:24 +01:00
parent 9b4ff27d25
commit b5013d8b36
3 changed files with 36 additions and 1 deletions

View File

@ -4,6 +4,7 @@ from core import utils
from computers.models import Computer from computers.models import Computer
from computers.models import ComputerCpuRelation from computers.models import ComputerCpuRelation
from computers.models import ComputerRamRelation
from devices.models import Warranty from devices.models import Warranty
@ -69,3 +70,16 @@ CpuFormSet = forms.inlineformset_factory(Computer,
can_delete=False, can_delete=False,
form=ComputerUpdateForm, form=ComputerUpdateForm,
max_num=1) max_num=1)
RamFormSet = forms.inlineformset_factory(Computer,
ComputerRamRelation,
fields=(
'ram',
'computer',
'amount',
),
exclude=[],
can_delete=False,
form=ComputerUpdateForm,
max_num=1)

View File

@ -19,6 +19,16 @@
{{ computer_formset|crispy }} {{ computer_formset|crispy }}
</div> </div>
</div> </div>
<div class="card mt-3">
<div class="card-body">
{{ cpu_formset|crispy }}
</div>
</div>
<div class="card mt-3">
<div class="card-body">
{{ ram_formset|crispy }}
</div>
</div>
</div> </div>
</div> </div>
<br> <br>

View File

@ -22,6 +22,7 @@ from .filters import ComputerFilter
from .forms import ComputerCreateForm from .forms import ComputerCreateForm
from .forms import ComputerFormSet from .forms import ComputerFormSet
from .forms import CpuFormSet from .forms import CpuFormSet
from .forms import RamFormSet
from .models import Computer from .models import Computer
from .models import ComputerCpuRelation from .models import ComputerCpuRelation
from .models import ComputerDiskRelation from .models import ComputerDiskRelation
@ -149,21 +150,31 @@ class ComputerUpdateView(LoginRequiredMixin, UpdateView):
self.request.POST, self.request.POST,
instance=self.object) instance=self.object)
context['cpu_formset'].full_clean() context['cpu_formset'].full_clean()
context['ram_formset'] = RamFormSet(
self.request.POST,
instance=self.object)
context['ram_formset'].full_clean()
else: else:
context['computer_formset'] = ComputerFormSet(instance=self.object) context['computer_formset'] = ComputerFormSet(instance=self.object)
context['cpu_formset'] = CpuFormSet(instance=self.object) context['cpu_formset'] = CpuFormSet(instance=self.object)
context['ram_formset'] = RamFormSet(instance=self.object)
return context return context
def form_valid(self, form): def form_valid(self, form):
context = self.get_context_data(form=form) context = self.get_context_data(form=form)
computer_formset = context['computer_formset'] computer_formset = context['computer_formset']
cpu_formset = context['cpu_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) response = super().form_valid(form)
computer_formset.instance = self.object computer_formset.instance = self.object
computer_formset.save() computer_formset.save()
cpu_formset.instance = self.object cpu_formset.instance = self.object
cpu_formset.save() cpu_formset.save()
ram_formset.instance = self.object
ram_formset.save()
return response return response
else: else:
return super().form_invalid(form) return super().form_invalid(form)