我尝试在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.id
或post.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,无需从头开始!