0

我有一个名为 Message 的模型,它有一个名为 in_response_to 的字段。我使用此字段通过将原始消息的主键存储在每个相关消息中来识别哪些消息相互关联,并通过创建的时间列出所有消息。

因此,例如我创建了 4 条消息,每个时间都相互关联并显示创建时间

Hello   1.00am 
My name is richard 2.00am 
What yours? 3.00am 
Kangarro 4.00am 

然后我检索带有消息 What yours的对象 凌晨 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 )
4

1 回答 1

1

我想你倒messagesmessage。假设message是您的单个对象,我们将像这样过滤消息:

messages = Message.objects.filter(in_response_to=message.in_response_to).filter(created__lt=message.created)

检查文档以获取更多比较示例(lte意味着less than or equal但您可以使用lt,gtgte

关于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)
于 2013-06-25T08:59:59.853 回答