在Django 2中创建评论系统



我尝试在django 2

中创建评论系统

我尝试将评论分配给帖子ID。我似乎仍然无法弄清楚。

我的型号:

class post_id(models.Model):
    user_post_id = models.IntegerField(null=True)
class Comments(models.Model):
    post = models.ForeignKey(post_id, on_delete=models.CASCADE, 
null=True)
    post_comment = models.TextField(null=True)
    comment_id = models.CharField(max_length=255, null=True)

class posts(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_text = models.TextField()
    post_likes = models.IntegerField(null=True)
    post_id = models.ForeignKey(post_id, on_delete=models.CASCADE, 
 null=True)
    post_category = models.ForeignKey(Category, on_delete=models.CASCADE)
    post_likes = models.IntegerField(default=0, null=True)
    post_comments = models.ForeignKey(Comments, on_delete=models.CASCADE, 
null=True)
    datetime = models.DateTimeField(auto_now_add=True)
    user_ip = models.CharField(max_length=100)
    user_agent = models.CharField(max_length=255)

我不明白你为什么要分开

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    post_comment = models.TextField(null=True)

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_text = models.TextField()
    post_category = models.ForeignKey(Category, on_delete=models.CASCADE)
    post_likes = models.IntegerField(default=0)  
    datetime = models.DateTimeField(auto_now_add=True)
    user_ip = models.CharField(max_length=100)
    user_agent = models.CharField(max_length=255)

我从帖子中删除了评论,因为,如果您愿意,可以致电:

comments = post.comments.all()

django的ID字段为默认值。您可以得到:comment.idpost.id

这就是我实现它的方式,并且运行良好。

class Post(models.Model):
    post_text = models.CharField(max_length=1500)
    post_date = models.DateField(auto_now_add=True)
    post_time = models.TimeField(auto_now_add=True)
    user = models.ForeignKey(Profile,on_delete=models.CASCADE)

    def __str__(self):
        return self.post_text[:30]
class PostComment(models.Model):
    comment_text = models.TextField(max_length=1000, help_text="Enter comment about blog here.")
    author = models.ForeignKey(Profile, on_delete=models.SET_NULL, null=True)
# Foreign Key used because BlogComment can only have one author/User, but users can have multiple comments
    post_date = models.DateTimeField(auto_now_add=True)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment_likes = models.PositiveIntegerField(default=0)
    def __str__(self):
        return self.post.__str__()+'....  commented by '+self.author.__str__()

这可以在这样的视图中使用

def get_queryset(self):
    return PostComment.objects.filter(post=self.kwargs['pk'])

url

path('postcomments/<int:pk>',GetPostComment.as_view()),

使用django-comments-xtd。它是一个很棒的模块,可让您真正容易拥有一个非常漂亮的评论系统。它的python,无需从头开始!

最新更新