Django Ошибка страницы не принимает аргумент при нажатии на ссылку на нее

Я боролся с одной из моих страниц в django. В основном я создаю граф (узлы и ребра), где вы можете добавлять и удалять узлы через формы. У меня есть модель графа (GraphDetail), которая требует узлов, и я создаю форму узла (GraphCreateNode), которая добавляет узлы в граф. Однако ссылка не работает. В ней говорится, что GraphCreateNode не принимает никаких аргументов. Теперь CreateGraphNode нужен id графа, в который он будет добавлен, отправляется ли он по url или хранится и доступен в сессии, у меня нет предпочтений. Сейчас я пытаюсь сделать это через url. И как уже было сказано, я получаю ошибку, и я не могу понять, где мне нужно ее исправить, поэтому я и спрашиваю всех вас.

Сообщение об ошибке:

TypeError at /graphs/graph/74921f18-ed5f-4759-9f0c-699a51af4307/graph_add_node/

GraphCreateNode() takes no arguments

Поэтому я поискал здесь, чтобы узнать, что можно найти: Что такое ошибка NoReverseMatch, и как ее исправить? была довольно информативной, но не достаточно. Затем я нашел TypeError: CraiglistScraper() не принимает аргументов, в то время как речь шла о Selinum, там упоминалось что-то о конструкторе. У моего класса нет конструктора, но нужен ли он ему? Или проблема в другом.

Вот два представления. GraphDetail и GraphCreateNode. Я нахожусь на странице GraphDetail и нажимаю ссылку для перехода к GraphCreateNode

GraphDetail:
    class GraphDetailView(generic.DetailView):
        model = Graph
        slug_field = '<uuid:id>'
        slug_url_kwarg = '<uuid:id>'

GraphCreateNode:

class GraphCreateNode:

    def add_a_node(request):
        new_node = get_object_or_404(Node, pk)

        if request.method == "POST":
            form = AddNodeForm(request.post)

            if form.is_valid():
                new_node.name = form.cleaned_data['name']
                new_node.summary = form.cleaned_data['summary']
                new_node.description = form.cleaned_data['description']
                new_node.due_date = form.cleaned_data['due_date']
                new_node.completed = form.cleaned_data['completed']
                new_node.neighbor_nodes = form.cleaned_data['neighbor_nodes']
                new_node.tags = form.cleaned_data['tags']
                new_node.save()
                graph = Graph.objects.get(pk=pk)
                graph.nodes.add(new_node)
                graph.save()

                return HttpResponseRedirect(reverse('graph-detail') )
        else:
            form = AddNodeForm()

        graph = Graph.objects.get(pk=pk)

        context = {
            'form': form,
            'graph': graph,
        }
        return render(request, 'graphs/graph_add_node.html')

Вот две html страницы

GraphDetail, который работает, поэтому я включил только ту часть, где я затем нажимаю, чтобы перейти к GraphCreateNode

  {% else %}
    <p>There are no nodes assigned to this Graph.</p>
  {% endif %}
  <p><a href="{% url 'graph-create-node' graph.pk %}">Add Node</a></p>
  <hr>

html-код GraphCreateNode:

{% extends "base_generic.html" %}
  <h1>Adding a node to graph: {{ graph.name }} </h1>

  <form action="" method="post">
    {% csrf_token %}
    <table>
      {{ form.as_table }}
    </table>
    <input type="submit" value="Submit">
  </form>
{% block content %}
{% endblock %}

Вот ссылки.

path('graph/<uuid:pk>', views.GraphDetailView.as_view(), name='graph-detail'),
path('graph/<uuid:pk>/graph_add_node/', views.GraphCreateNode, name= 'graph-create-node'),

Вот модель для формы узла.

from django.forms import ModelForm

from .models import Node

class AddNodeForm(ModelForm):
    class Meta:
        model = Node
        fields = ['name', 'summary', 'description', 'due_date', 'completed', 'neighbor_nodes', 'tags']
    

Я все еще новичок в Django и мне трудно понять, как я должен отправить идентификатор графа с первой страницы graphdetails в GraphCreateNode. Дайте мне знать, если мне нужно добавить больше информации или прояснить ситуацию.

Вернуться на верх