我正在尝试在Django中创建一个消息传递系统,我遇到了一个问题:如何有效地找到一个线程中链接的所有消息?
假设我有两个模型:
class Conversation(models.Model):
sender = models.ForeignKey(User)
receiver = models.ForeignKey(User)
first_message = models.OneToOneField(Message)
last_message = models.OneToOneField(Message)
class Message(models.Model):
previous = models.OneToOneField(Message)
content = models.TextField()
(代码未经过测试,我确信它不会按原样工作)
既然它被设计成一个简单的链表,那么它是递归遍历它的唯一方法吗?我应该尝试只获取前一个的前一个,直到我找到第一个,还是有一种方法可以更有效地查询所有它们?
发布于 2020-04-11 13:30:37
我使用深度的Rest框架序列化程序。所以如果你有一个深度值为3的串行化程序,我将获取所有外键的完整模型,直到三个父级。
https://www.django-rest-framework.org/api-guide/serializers/#specifying-nested-serialization
class AppliedSerializer(serializers.ModelSerializer):
class Meta:
model = Applied
fields = ("__all__")
depth = 3
https://stackoverflow.com/questions/61152240
复制相似问题