У меня есть модель комментария на домашней странице, но она не может автоматически определить, в каком сообщении я пишу свой комментарий среди всех сообщений - PullRequest
1 голос
/ 04 октября 2019

Итак, ошибка, с которой я сталкиваюсь. ПК не может быть распознан. Потому что на главной странице слишком много постов. Я пытался решить эту проблему, меняя pk на id, меняя модели комментариев многими способами. Но это бесполезно

Реальная причина в том, что я должен перейти к подробному обзору, чтобы страница могла легко обнаружить. О, смотрите, он здесь на пути к этой странице ('post //', PostDetailView.as_view (), name = "post-detail"), так что мы можем сохранить этот комментарий в специальном post.pk. Но я хочу, чтобы все было связано

NameError в / name 'pk' не определено

class PostListView(ListView, DetailView):   
    model = Post
    template_name = "blog/home.html" # <app>/model>_viewtype>html
    context_object_name = "posts"
    paginate_by = 15
    template = loader.get_template('blog/post_detail.html')

    def get(self, request, *args, **kwargs):
        posts = Post.objects.all().order_by("-id")
        gallerys = Gallery.objects.all()
        comments = Comment.objects.filter()
        likes = Post.objects
        post = request.POST.get(Post)

        # cnc = Contact.objects.all()
        today = timezone.now().date()
        is_liked = False
        # if posts.likes.filter(id = request.user.id).exists():
        #   is_liked = True
        comment_form = CommentForm(request.POST or None)
        context = { 'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "gallerys":gallerys, "today": today}

        # return render(request, "blog/home.html")

        return render(request, "blog/home.html", context)



    def post(self, request, *args, **kwargs):
        form = PostForm()
        posts = Post.objects.all().order_by("-id")
        data2 = Gallery.objects.all()
        comments = Comment.objects.filter()
        likes = Post.objects
        today = timezone.now().date()
        is_liked = False
        comment_form = CommentForm(self.request.POST or None )
        if comment_form.is_valid():
            form.instance.author = request.user
            post = form.save(commit = False)
            content = request.POST.get("content")
            # post = request.POST.get(Post)
            post = get_object_or_404(Post, pk = pk)

            comment = Comment.objects.create(post = post, author = request.user, content= content)
            comment.save()
            return render(request, "blog/home.html", {'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "today": today})

        else:
            comment_form = CommentForm()
        return render(request, "blog/home.html", {'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "gallerys":gallerys, "today": today})


class Post(models.Model):


    STATUS_CHOICES = {
        ("draft", "Draft"),
        ("published", "Published"),
    }
    author = models.ForeignKey(User, on_delete = models.CASCADE )
    title = models.CharField(max_length= 100, null=True, blank=True,  default="Başlık")
    content = models.TextField(blank =True, null=True, default = "Enter your content")
    .....
    objects = models.Manager


    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    def get_absolute_url(self):
        return reverse("post-detail", kwargs={"pk": self.pk})

    def save(self, *args, **kwargs):
        self.slug = self.__str__()
        return super(Post, self).save(*args, **kwargs)

    #it will show not <Question: Question object (1)> but the authors name or title
    def __str__(self):
        return f"{self.pk}"




class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete = models.CASCADE)
    author = models.ForeignKey(User,on_delete=models.CASCADE)
    content = models.TextField(verbose_name='content', default="Başlık")
    timestamp = models.DateTimeField(default=timezone.now)
    # Name = models.CharField(max_length = 100, default="Başlık")
    # Email = models.EmailField(max_length = 100)
    # Body = models.TextField()
    # Active = models.BooleanField(default = True)
    # Parent = models.ForeignKey("self", on_delete = models. CASCADE, null = True, blank = True, related_name = "replies")

    objects = models.Manager


    def __str__(self):
        return f"{self.pk}"

    def get_absolute_url(self):
        return reverse("blog:post-detail", kwargs={
            'pk': self.pk
        })


#blog app
from . import views

urlpatterns = [
    path('', PostListView.as_view(), name ="blog-home"),
    path('user/<str:username>', UserPostListView.as_view(), name ="user-posts"),
    path('post/<int:pk>/', PostDetailView.as_view(), name ="post-detail"),

    path('post/new/', PostCreateView.as_view(model=Post, success_url=('/')), name ="post-create"),

    path('contact/', contact.as_view(), name ="blog-contact"),

    url(r'^$', views.HomeView.as_view(), name='home'),


]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...