Fix language % input

This commit is contained in:
Kristofers Solo 2023-04-08 01:00:01 +03:00
parent a969a90007
commit 7da126c2f0

View File

@ -1,9 +1,8 @@
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.forms import formset_factory
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
from .forms import ProjectForm, ProjectProgrammingLanguageForm from .forms import ProjectForm, ProjectProgrammingLanguageFormSet
from .models import ProgrammingLanguage, Project from .models import Project
def index(request): def index(request):
@ -17,27 +16,23 @@ def index(request):
@login_required(login_url="login/") @login_required(login_url="login/")
@permission_required("fossdb.add_post", login_url="login/", raise_exception=True) @permission_required("fossdb.add_post", login_url="login/", raise_exception=True)
def add_project(request): def add_project(request):
ProgrammingLanguageFormSet = formset_factory(ProjectProgrammingLanguageForm, extra=1)
if request.method == "POST": if request.method == "POST":
project_form = ProjectForm(request.POST) project_form = ProjectForm(request.POST)
language_formset = ProgrammingLanguageFormSet(request.POST) language_formset = ProjectProgrammingLanguageFormSet(request.POST, instance=Project())
if project_form.is_valid() and language_formset.is_valid(): if project_form.is_valid() and language_formset.is_valid():
project = project_form.save(commit=False) project = project_form.save(commit=False)
project.author = request.user project.author = request.user
project.save() project.save()
for language_form in language_formset: language_formset.instance = project
if language_formset.is_valid(): language_formset.save()
language = language_form.save(commit=False)
language.project = project
language.save()
project_form.save_m2m() project_form.save_m2m()
return redirect("/") return redirect("/")
else: else:
project_form = ProjectForm() project_form = ProjectForm()
language_formset = ProgrammingLanguageFormSet() language_formset = ProjectProgrammingLanguageFormSet()
context = { context = {
"title": "Add project", "title": "Add project",