Подходящий запрос не существует. Ошибка Django

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

Django Error:

DoesNotExist в /save_post/

Профиль, соответствующий запросу, не существует.

views.py, строка 75, in save_post form.authore = Profile.objects.get(user=request.user)

views.py

    @login_required
    def save_post(request):
        if request.method == "POST":
            form = Post(content=request.POST['content'])
            form.authore = Profile.objects.get(user=request.user)
            form.save()
        elif request.method == "PUT":
            data = json.loads(request.body)
            post_id = int(data["post_id"])
            new_content = data["new_content"]
            post = Post.objects.filter(id=post_id).first()
            if post.authore.user != request.user:
                return HttpResponse(status=401)
            post.content = new_content
            post.save()
            return JsonResponse({
                "result": True
            }, status=200)
        else:
            return JsonResponse({
                "error": "post not found"
            }, status=400)
        return index(request)

models.py

    class User(AbstractUser):
    pass


class Profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)


class Post(models.Model):
    content = models.TextField()
    timestamp = models.DateTimeField(default=timezone.now)
    authore = models.ForeignKey(Profile, on_delete=models.CASCADE)
    likes = models.PositiveIntegerField(default=0, blank=True, null=True)

    def serialize(self):
        return {
            "id": self.id,
            "content": self.content,
            "timestamp": self.timestamp.strftime("%b %#d %Y, %#I:%M %p"),
            "authore": self.authore.id,
            "username": self.authore.user.username,
            "likes": self.likes.count(),
        }

Это кажется правильным, но у этого пользователя, которого вы используете, нет профиля так что вот мои заметки :

Вы можете использовать get_object_or_404 это, если профиль не найден, будет возвращено not found

from django.shortcuts import  get_object_or_404
form.authore =  get_object_or_404(Profile, user=request.user)

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

при создании профиля пользователя лучше использовать отношение один_к_одному, так как каждый пользователь имеет только один профиль и наоборот

для правильной работы смотрите здесь https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

перейдите к Расширение модели пользователя с помощью ссылки "один-к-одному" в предыдущей ссылке

поле выполнить это руководство и профиль пользователя будет создан автоматически при создании пользователя

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