2013-05-11 106 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

相關問題