我有一个存储电子邮件线程的 django 应用程序。当我从 mbox 解析原始电子邮件并将它们插入数据库时,我会包含电子邮件标头参数“message-id”和“in-reply-to”。message-id 是标识消息的唯一字符串,in-reply-to 标识给定消息响应的消息。
这是我的模型的消息部分:
class Message(models.Model):
subject = models.CharField(max_length=300, blank=True, null=True)
mesg_id = models.CharField(max_length=150, blank=True, null=True)
in_reply_to = models.CharField(max_length=150, blank=True, null=True)
orig_body = models.TextField(blank=True, null=True)
目标是能够以类似于 gmail 的线程格式显示电子邮件对话。我打算只使用邮件标头中的 message-id(模型中的mesg_id)和回复中的(模型中的 in_reply_to)来跟踪邮件并进行线程处理。
在查看了 SO 和 google 之后,看起来我应该使用 django-treebeard 或 django-mptt 之类的库来执行此操作。当我查看这两个解决方案中的任何一个的文档时,看起来大多数模型都使用外键关系,这让我感到困惑。
鉴于上面的示例模型,我如何在我的应用程序中实现 django-treebeard 或 django-mptt?这可以使用 mesg_id 和 in_reply_to 字段吗?