Создание системы комментариев в Джанго 2 - PullRequest
0 голосов
/ 05 июля 2019

Я пытался создать систему комментариев в Django 2

Я попытался присвоить комментарий идентификатору записи. Я все еще не могу понять это.

My models.py:

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)

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Вот как я это реализовал, и он работает нормально.

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()),
0 голосов
/ 05 июля 2019

Я не понимаю, почему он у вас отделен

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)

Я удалил комментарии из Post, потому что, если вы хотите, вы можете позвонить:

comments = post.comments.all()

У Django есть поле idпо умолчанию.Вы можете получить: comment.id или post.id

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