首页 > 解决方案 > 如何在克隆 Twitter 网站中实现(推文或帖子被删除)?

问题描述

我正在使用 django 构建简单的 Twitter 网站,只是为了练习,因为我还是一名初级开发人员。

在我的网站中,您可以添加推文、喜欢、不喜欢、编辑、删除和转发。

这是我推文的模型:

class Tweet(models.Model):
    content             = models.TextField(max_length=250, blank=True, null=True)
    image               = models.ImageField(upload_to="tweets/images/", blank=True, null=True)
    date_posted         = models.DateTimeField(default=timezone.now)
    author              = models.ForeignKey(NewUser, on_delete=models.CASCADE, related_name='tweets')
    likes               = models.ManyToManyField(NewUser, related_name='likes')
    dislikes            = models.ManyToManyField(NewUser, related_name='dislikes')
    retweeted_tweet     = models.ForeignKey("self", null=True, blank=True, on_delete=models.SET_NULL)

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

问题是我想跟踪retweeted_tweet以了解是否:

假设我转发了推文并且该推文的所有者将其删除;因此retweeted_tweet将变为 Null,转推将被视为正常推文。

我需要将retweeted_tweet设置为特定值,以便我知道它是转推,并且原始推文已被删除以便能够显示类似(原始推文已删除)但我不能这样做,因为它的类型是models.ForeignKey .

标签: sqldjangosqlitedjango-models

解决方案


您可以添加 is_retweet = BooleanField(default=False)正常的推文is_retweet = False和转推的推文is_retweet = True,因此如果您找到is_retweet = True然后retweeted_tweet = None它是转推并且其父推文已被删除


推荐阅读