sql - 如何在克隆 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以了解是否:
- 它是 Null(所以现在我们可以将其视为普通推文)
- 它具有 aa 值(所以我们的推文实际上是转推)
- 它具有另一条推文的价值,但原始推文已被删除(这是问题)。
假设我转发了推文并且该推文的所有者将其删除;因此retweeted_tweet将变为 Null,转推将被视为正常推文。
我需要将retweeted_tweet设置为特定值,以便我知道它是转推,并且原始推文已被删除以便能够显示类似(原始推文已删除)但我不能这样做,因为它的类型是models.ForeignKey .
解决方案
您可以添加 is_retweet = BooleanField(default=False)
正常的推文is_retweet = False
和转推的推文is_retweet = True
,因此如果您找到is_retweet = True
然后retweeted_tweet = None
它是转推并且其父推文已被删除
推荐阅读
- .net - Serilog 仅将 Main() 中的消息记录到 .NET Framework 中的 Loggly
- python - 如何使用 sphinx autoclass 排除类的签名
- java - 在文件扩展名之前为文件名添加后缀
- spring-boot - maven-failsafe-plugin 未检测到 Kotlin 测试或 maven-surefire-plugin 未停止容器
- python - 熊猫按条件选择行并删除所有其他不遵守的人
- mysql - 为什么在用于从 NetSuite 提取数据的 json 配置文件中的 sql 查询末尾添加“a1”?不添加会导致错误?
- clojure - Clojure's load-string works in the repl but not in `lein run`
- linux - 如何反转 Gnome 40 上的自动隐藏停靠行为
- arrays - 在 Golang 中,如何将 [32]byte 转换为 uint64,然后再反转回 [32]byte
- javascript - JavaScript 中发生的所有隐式类型转换都被认为是类型强制吗?