我有一个名为Message的模型,它有一个名为in_response_to的字段。我使用此字段通过在每条相关消息中存储原始消息的主键来识别哪些消息彼此相关,并且我通过创建的时间列出所有消息。
例如,我创建了4条消息,每个时间彼此相关并显示创建的时间
Hello 1.00am
My name is richard 2.00am
What yours? 3.00am
Kangarro 4.00am
我使用消息你的内容检索对象?凌晨3点。如何显示与此对象预告片相关的所有消息而不是创建的时间?
class Message(models.Model):
user = models.ForeignKey(User, related_name='sender')
recipient = models.ForeignKey(User, related_name='recipient')
created = models.DateTimeField(auto_now_add=True)
in_response_to = models.ForeignKey('self', null=True, blank=True)
def __unicode__(self):
return self.body
视图
messages = Message.objects.get(pk=id,recipient=request.user.id)
message = Message.objects.filter(in_response_to=messages.in_response_to )
答案 0 :(得分:1)
我认为您将messages
与message
对齐。假设message
是您的单个对象,我们将过滤消息:
messages = Message.objects.filter(in_response_to=message.in_response_to).filter(created__lt=message.created)
查看docs以获取更多比较示例(lte
表示less than or equal
但您可以使用lt
,gt
,gte
等等)
关于DateTime
事:
created = models.DateTimeField(default=datetime.datetime.now)
是您拥有的选项之一(您必须import datetime
)。另一个是覆盖模型的保存方法:
class Message(models.Model):
# other fields omitted to keep it clean
created = models.DateTimeField(blank=True, null=True)
def save(self, *args, **kwargs):
if not self.created:
self.created = datetime.datetime.now()
return super(Message, self).save(*args, **kwargs)