如何使用Django ORM获取所有联系人和消息?

时间:2013-05-11 10:15:24

标签: sql django

过去两天我一直在考虑这个问题,而且我不知道该怎么做。

型号:

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

我所做的只是结合两个字段,删除重复记录和我的身份证,但我认为,并非全部。那么,关于views.py的任何工作示例?是否可以使用SQL执行此操作?

感谢。

1 个答案:

答案 0 :(得分:0)

模型字段的变化'已加盖'必须是布尔

readed = models.BooleanField(default=False)

您可以实施一个不错的第三方套餐

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

使用您的消息应用程序可以帮助您完成更多工作。