DoesNotExist в /nuevo/ Профиль, соответствующий запросу, не существует
Простите, я совсем новичок в Django и Python, делаю школьный проект, я делал вход по умолчанию с помощью python, он создает пользователей и делает вход, пока все хорошо. Когда я вхожу с правами администратора, я могу ввести "html.html" без проблем и представление запускается и делает запросы в базу данных, проблема в том, что когда я вхожу с профилем, отличным от администратора, я получаю это сообщение
DoesNotExist в /nuevo/
Профиль, соответствующий запросу, не существует.
Метод запроса: GET
Я думаю, что проблема заключается в этом запросе
query = Profile.objects.get(pk=request.user.pk)
Что я хотел, так это чтобы пользователь, который вошел в систему, отправил меня работать над своей базой данных, я не знаю, что еще можно сделать :( вот мои модели
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
# Create your models here.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='batman.png')
equip = models.CharField(max_length=1500,default=0)
pokemon1 = models.CharField(max_length=1500,default=0)
pokemon2 = models.CharField(max_length=1500,default=0)
pokemon3 = models.CharField(max_length=1500,default=0)
pokemon4 = models.CharField(max_length=1500,default=0)
pokemon5 = models.CharField(max_length=1500,default=0)
pokemon6 = models.CharField(max_length=1500,default=0)
def __str__(self) -> str:
return f'Perfil de {self.user.username}'
class Post(models.Model):
user=models.ForeignKey(User, on_delete=models.CASCADE,related_name='posts')
timestamp = models.DateTimeField(default=timezone.now)
content = models.TextField()
class Meta:
ordering = ['-timestamp']
def __str__(self):
return f'{self.user.username}:{self.content}'
мои взгляды
моя html-страница
{% extends 'social/layout.html'%}
{% load static %}
{% block content %}
<link href='https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap' rel='stylesheet'>
<link href="{% static '/styles.css' %}" rel="stylesheet" />
{% if poke_data %}
<center>
<div id="contenedor">
<div id="contenidos">
{% for poke_data in poke_data %}
<div class="poke-card">
<div class="img-container">
<img class="poke-img" src={{poke_data.sprites}}>
</div>
<div>{{ poke_data.name}}</div>
<div>ID:{{poke_data.id}}</div>
<div>{{poke_data.types}}</div>
<div>{{poke_data.types2}}</div>
</div>
{% endfor %}
</div>
</div>
</center>
<center>
<div id="contenedor">
<div id="contenidos">
{% for poke_data2 in poke_data2 %}
<div class="poke-card">
<div class="img-container"><img class="poke-img" src={{poke_data2.sprites}}></div>
<div>{{ poke_data2.name}}</div>
<div>ID:{{poke_data2.id}}</div>
<div>{{poke_data2.types}}</div>
<div>{{poke_data2.types2}}</div>
</div>
{% endfor %}
</div>
</div>
</center>
{% endif %}
{% endblock %}
настройки
Извините за беспорядок в моем коде, я только учусь программировать, надеюсь, вы сможете мне помочь, большое спасибо.
query = Profile.objects.get(pk=request.user.pk)
Этот запрос не делает того, о чем вы думаете. У вас есть 2 соответствующие таблицы (Profile и User). В обеих есть pk
и они, по всем признакам, не связаны между собой. Вы добавили поле OneToOneField, которое создает связь между таблицами. Запрос на самом деле становится проще, поскольку вы можете проверить пользователя профиля и проверить, совпадает ли он с request.user, следующим образом:
query = Profile.objects.get(user=request.user)