Django показать сообщения, связанные с пользователем spefi c, вошедшим в систему - PullRequest
0 голосов
/ 14 января 2020

Я создал веб-сайт для блоггеров на Django, и у меня была бы страница, где пользователи могут видеть / управлять своими собственными сообщениями, чтобы они могли редактировать, обновлять и удалять.

Я пытался добавить страница, но она продолжает выдавать сообщение об отсутствии обратного соответствия?

Я уверен, как решить эту проблему, как-то связано с тем, как я добавил автора в модели Post в PostAuthor?

enter image description here Это файл моей модели

class PostAuthor(models.Model):
    user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True)
    bio = models.TextField(max_length=400, help_text="Enter your bio details here.")

    class Meta:
        ordering = ["user", "bio"]

    def get_absolute_url(self):
        return reverse('post-by-author', args=[str(self.id)])

    def __str__(self):
        return self.user.username


class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(PostAuthor, on_delete=models.CASCADE, null=True, blank=True)
    updated_on = models.DateTimeField(auto_now=True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def get_absolute_url(self):
        return reverse('post-detail', args=[str(self.id)])

    def __str__(self):
        return self.title

Файл URL-адресов

urlpatterns = [
    path('', views.IndexPage.as_view(), name='index'),
    path('posts/', views.PostList.as_view(), name='all-posts'),
    path('blog/<int:pk>', views.PostDetail.as_view(), name='post-detail'),
    path('blog/<int:pk>', views.PostListbyAuthorView.as_view(), name='post-by-author'),
    path('accounts/', include('django.contrib.auth.urls')),
]

Просмотр файла

class PostListbyAuthorView(generic.ListView):
    model = Post
    template_name = 'blog/post_list_by_author.html'

    def get_queryset(self):
        id = self.kwargs['pk']
        target_author = get_object_or_404(PostAuthor, pk=id)
        return Post.objects.filter(author=target_author)

    def get_context_data(self, **kwargs):
        context = super(PostListbyAuthorView, self).get_context_data(**kwargs)
        context['blog'] = get_object_or_404(PostAuthor, pk=self.kwargs['pk'])
        return context


class IndexPage(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')
    template_name = 'blog/index.html'


class PostList(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')
    template_name = 'blog/all_posts.html'


class PostDetail(generic.DetailView):
    model = Post
    template_name = 'blog/post_detail.html'

1 Ответ

1 голос
/ 14 января 2020

Вы не передаете идентификатор пользователя по своей ссылке, попробуйте это:

{% url 'post-by-author' pk=user.id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...