Django - изменение поля идентификатора - PullRequest
0 голосов
/ 20 января 2020

Так что я понимаю, что не стоит использовать ключевое слово - ID. Итак, я попытался изменить идентификатор ниже на cid. Однако когда я делаю это, я получаю: testing () получил неожиданный аргумент ключевого слова 'id'. Если я поменяю его с cid на ID. Все работает просто отлично. Что я делаю не так?

def testing(request, cid):
    """Testing sheet for controls"""
    if request.method == "GET":
        testing_sheet = IsoControls.objects.get(pk=cid)
        form = forms.ControlTesting(instance=testing_sheet)
        return render(request, 'controls_app/testing_sheet.html', {'form':form})
    else:
        testing_sheet = IsoControls.objects.get(pk=cid)
        form = forms.ControlTesting(request.POST, instance=testing_sheet)
        if form.is_valid():
            form.save()
        return render(request, 'controls_app/testing_sheet.html', {'form':form})

Обновление на основе комментариев.

Мой URL-адрес

urlpatterns = [
    path('', views.home, name='home'), 
    path('<int:id>', views.testing, name='testing') 
]

В моем html

<td>
    <a href="{% url 'testing' control.id %}" class="btn text-secondary px-0"><i class="fas fa-edit"></i></a>
</td>

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Хорошо, так что это глупая ошибка. Я изменил его CID в моих представлениях, но мне также нужно было изменить URL-адрес на CID.

URL:

urlpatterns = [
    path('', views.home, name='home'), 
    path('<int:cid>', views.testing, name='testing') 
] 

Просмотры

def testing(request, cid):
    """Testing sheet for controls"""
    if request.method == "GET":
        testing_sheet = IsoControls.objects.get(pk=cid)
        form = forms.ControlTesting(instance=testing_sheet)
        return render(request, 'controls_app/testing_sheet.html', {'form':form})
    else:
        testing_sheet = IsoControls.objects.get(pk=cid)
        form = forms.ControlTesting(request.POST, instance=testing_sheet)
        if form.is_valid():
            form.save()
        return render(request, 'controls_app/testing_sheet.html', {'form':form})
0 голосов
/ 20 января 2020
def testing(request, pk):
    """Testing sheet for controls"""

    testing_sheet = IsoControls.objects.get(id=pk)
    form = forms.ControlTesting(instance=testing_sheet)
    if request.method=='POST':
       form = forms.ControlTesting(request.POST, instance=testing_sheet)          

           if form.is_valid():
              form.save()
              return redirect('../your_given_path_name')

    return render(request, 'controls_app/testing_sheet.html', {'form':form})
...