Как я могу получить вопрос пользователя из представления, у которого уже есть slug
Я пытаюсь получить вопрос пользователя из представления public_profile
, которое использует slug для получения информации о профиле пользователя, и теперь я хотел получить вопрос пользователя в представлении public_profile
, которое использует slug, но это дает мне ошибку Page not found (404)
. Я хочу, чтобы пользователи могли видеть вопросы других пользователей на странице своего профиля. Как я могу решить эту проблему, чтобы получить вопрос пользователя, когда кто-то посетил его страницу профиля?
Модель вопроса:
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100, blank=False, null=False)
body = RichTextField(blank=False, null=False)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
slug = models.SlugField(unique=True, max_length=200)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Question, self).save(*args, **kwargs)
def __str__(self):
return str(self.title)
Вид:
@login_required(login_url='login')
def public_profile(request, slug):
profile = get_object_or_404(Profile, slug=slug)
questions = get_object_or_404(Question, slug=slug)
number_of_likes = Like.objects.filter(post__user=request.user).count()
try:
number_of_likes = Like.objects.filter(post__user=profile.user).count()
except ObjectDoesNotExist:
number_of_likes = None
context = {
'profile':profile,
'number_of_likes':number_of_likes,
'questions':questions
}
return render(request, 'public_profile.html', context)
мой шаблон:
<div class="container">
<div class="row justify-content-center">
<div class="col">
<ul class="list-group">
<li class="list-group-item">{{question.title}}</li>
</ul>
</div>
</div>
</div>
Урлы:
path('userProfile/<slug:slug>/', views.public_profile, name='Public_Profile'),
Я бы изменил следующую строку на
profile = get_object_or_404(Profile, slug=slug)
to
profile = get_object_or_404(Profile, user=request.user)
Скорее всего, вы хотите использовать slug для получения Question
, а не User Profile
.