Добавить или отредактировать, если уже существует
Я работаю над веб-приложением, в котором есть несколько форм, позволяющих пользователю отправлять данные в базу данных.
Данные связаны с проектом, и на странице проекта у меня есть выпадающий список, который позволяет выбрать, какую информацию нужно добавить в проект.
На данный момент у меня есть два представления, связанные с двумя выпадающими списками. Один для добавления новых данных, другой для обновления, но в идеале я бы хотел, чтобы кнопка либо переводила вас на страницу обновления, либо добавляла новую страницу в зависимости от того, какие данные уже добавлены в базу данных.
Так есть ли способ иметь одну кнопку, которая автоматически переводит вас на правильный вид?
Я представляю, что мне понадобится какая-то логика внутри представления для обработки этого. Но я не уверен, что это будет?
Views.py
@login_required
def AddFundamentals(request,project_id):
project = get_object_or_404(Project, pk=project_id)
if request.method == 'POST':
form = AddFundamentalsForm(request.POST)
if form.is_valid():
form.instance.project = project
form.save()
return redirect('http://127.0.0.1:8000/')
else:
form = AddFundamentalsForm()
return render(request, 'pages/add_fundamentals.html', {'project': project, "form": form})
@login_required
def UpdateFundamentals(request,project_id):
project= Project.objects.get(pk=project_id)
form = AddFundamentalsForm(request.POST or None, instance=project)
if form.is_valid():
form.save()
return redirect('dahsboard.html')
return render(request, 'pages/update_fundamentals.html', {'project': project, "form": form})
HTML
<div class="col-sm-6">
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Add Evaluation Data <i class="mdi mdi-chevron-down"></i>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="{% url 'add_fundamentals' project.id %}">Add Critical Fundamentals <span class="badge bg-success"></span></a>
<a class="dropdown-item" href="{% url 'update_fundamentals' project.id %}">Update Critical Fundamentals</a>
<a class="dropdown-item" href="#">Secondary Elements</a>
<a class="dropdown-item" href="#">Other Elements</a>
<a class="dropdown-item" href="#">Founders and Development Team</a>
<a class="dropdown-item" href="#">Marketing Assessment</a>
<a class="dropdown-item" href="#">Product Evaluation</a>
</div>
</div>
</div><!-- end col -->
Views.py
@login_required
def Add_or_updateFundamentals(request,project_id):
project = Project.objects.filter(pk=project_id)
check_exist = project.exists()
if request.method == 'POST':
if check_exist:
form = AddFundamentalsForm(request.POST,instance=project[0])
else:
form = AddFundamentalsForm(request.POST)
if form.is_valid():
if not check_exist:
form.instance.project = project
form.save()
return redirect('http://127.0.0.1:8000/')
else:
if check_exist:
form = AddFundamentalsForm(instance=project[0])
return render(request, 'pages/update_fundamentals.html', {'project': project, "form": form})
else:
form = AddFundamentalsForm()
return render(request, 'pages/add_fundamentals.html', {'project': project, "form": form})