Тестирование функции Update a Post

Я не совсем понимаю, как обновлять записи в блоге на основе моего кода. Я использую представления, основанные на методах.

def create_post(request):
    form_class = PostForm
    template = 'addpost.html'

    
    if request.method == "POST":
        form = form_class(request.POST)
        title = request.POST.get("title")
        content = request.POST.get("content")
        user_id = request.POST.get("author")

        if request.user.has_perm("posts.add_post"):
            Post.objects.create(
                title=title,
                content=content,
                author=User.objects.get(pk=user_id)
            )
        else:
            pass

    return render(request, template)

def edit_post(request):
    form_class = PostForm
    template = 'editpost.html'

    if request.method == "PATCH":
        form = form_class(request.PATCH)
        Title = request.PATCH.GET("title")
        Content = request.PATCH.GET("content")
        User_id = request.PATCH.GET("author")

    if request.user.has_perm("posts.update_post") and (User_id == User.pk):
        Post.objects.update(
            title=Title,
            content=Content,
            author=User.objects.get(pk=User_id)
        )
    else:
        pass

    return render(request, template)

Для метода update_post в этом сценарии нужно использовать PATCH, UPDATE или POST-запрос? Имейте в виду, что я также использую этот метод для тестирования.

Вот код Pytest:

class TestPermissions:
    @pytest.mark.django_db
    def test_post_add_contributor_group_permission(db):
        client = Client()

        user = User.objects.create_user(
            username="testuser",
            email="test@example.com",
            password="pass123"
        )

        

        post_data = {
            "title": "Post Title",
            "content": "Post Content",
            "author": user.id
        }

        group = Group.objects.create(name="Contributor")
        client.login(username="testuser", password="pass123")

        response = client.post(reverse("add_post"), post_data)

        assert response.status_code == 200
        assert Post.objects.all().count() == 0

        content_type = ContentType.objects.get_for_model(Post)
        permission = Permission.objects.get(
            content_type=content_type,
            codename__icontains="add"
        )

        group.permissions.add(permission)
        user.groups.add(group)

        response = client.post(reverse("add_post"), post_data)

        assert response.status_code == 200
        assert Post.objects.all().count() == 0


    @pytest.mark.django_db
    def test_post_update_contributor_group_permission(db):
        client = Client()

        user = User.objects.create_user(
             username="testuser",
            email="test@example.com",
            password="pass123"
        )

        post_data = {
            "title": "Post Title",
            "content": "Post Content",
            "author": user.id
        }

        group = Group.objects.create(name="Contributor")
        client.login(username="testuser", password="pass123")

        content_type = ContentType.objects.get_for_model(Post)
        permission = Permission.objects.get(
            content_type=content_type,
            codename__icontains="add"
        )

        group.permissions.add(permission)
        user.groups.add(group)

    
        response = client.post(reverse("add_post"), post_data)

        updated_data = {
            "title": "Updated Post Title",
            "content": "Updated Post Content",
            "author": user.id
        }
        response = client.patch('edit_post//1', updated_data)

        assert response.status_code == 200

Я использовал и патч, и обновление без какого-либо успеха. Есть ли кто-нибудь, кто может подсказать мне, как сделать обновления?

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