2013-05-11 103 views
0

最近2天我一直在想它,而且我不知道该怎么做。如何使用Django ORM获取所有联系人和消息?

型号:

class Messages(models.Model): 
    sender = models.ForeignKey(User, verbose_name="Sender", related_name='sender_user') 
    receiver = models.ForeignKey(User, verbose_name="Receiver", related_name='receiver_user') 
    readed = models.BooleanField('Readed') 
    date_time = models.DateTimeField('Time', auto_now=True) 
    message = models.CharField('Message', max_length=255) 

在我需要的唯一联系人列表页(不含矿山)和计数未读邮件,以便通过DATE_TIME。例如,在上表中我们可以看到:

+----+-----------+-------------+--------+---------------------+--------------------------+ 
| id | sender_id | receiver_id | readed | date_time   | message     | 
+----+-----------+-------------+--------+---------------------+--------------------------+ 
| 1 |   1 |   2 |  0 | 2013-05-10 17:53:53 | 14124141     | 
| 2 |   2 |   1 |  0 | 2013-05-10 18:13:16 | 2131231 abf  | 
| 3 |   2 |   1 |  0 | 2013-05-10 18:17:29 | 52525252     | 
| 4 |   1 |   3 |  0 | 2013-05-10 20:00:52 | 12312312312    | 
+----+-----------+-------------+--------+---------------------+--------------------------+ 

在一个页面必须有2个联系人:

3 | 1 unread 

2 | 2 unread 

我所做的是两个领域结合起来,删除重复的记录,我的ID,但我想,这不是全部。那么,关于views.py的任何工作示例?可以用SQL来做到这一点吗?

谢谢。

+0

它不清楚你想要完成什么。你是否将receiver_id或sender_id中的消息分组在表中? 'your_id'是什么,什么消息被过滤掉(不包括你是发送者还是接收者的消息)? – 2013-05-11 11:19:45

+0

在表格中,我没有对消息进行分组。我的ID - 1,例如 – tim 2013-05-11 11:42:44

回答

0

你的模型场的改变“readed”它必须是一个布尔

readed = models.BooleanField(default=False) 

您可以实现一个很好的第三方包装

https://github.com/philomat/django-persistent-messages

,帮助您与做多你消息应用

+0

谢谢,但我想做我的'简单'的想法:) – tim 2013-05-11 11:48:40

+0

我想做消息用户给用户,而不是通知 – tim 2013-05-11 12:00:03

+0

@tim Okaies。请浏览模型https://github.com/philomat/django-persistent-messages/blob/master/persistent_messages/models.py – 2013-05-11 12:07:40

相关问题