2012-07-16 66 views
1

我使用django評論系統,並且只想提取帖子上的第一條評論。獲得每條信息的第一條評論

mysql> desc django_comments ; 
+-----------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+-----------------+--------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
| content_type_id | int(11)  | NO | MUL | NULL |    | 
| object_pk  | longtext  | NO |  | NULL |    | 
| site_id   | int(11)  | NO | MUL | NULL |    | 
| user_id   | int(11)  | YES | MUL | NULL |    | 
| user_name  | varchar(50) | NO |  | NULL |    | 
| user_email  | varchar(75) | NO |  | NULL |    | 
| user_url  | varchar(200) | NO |  | NULL |    | 
| comment   | longtext  | NO |  | NULL |    | 
| submit_date  | datetime  | NO |  | NULL |    | 
| ip_address  | char(15)  | YES |  | NULL |    | 
| is_public  | tinyint(1) | NO |  | NULL |    | 
| is_removed  | tinyint(1) | NO |  | NULL |    | 
+-----------------+--------------+------+-----+---------+----------------+ 

我的職位content_type_id = 48

我想知道,離開了每一個職位(object_pk)的第一條評論(分鐘submit_date)的用戶。

有沒有「Django」的方式來做到這一點? 還是需要使用原始SQL?

+0

當然你可以查詢所有其內容只是「第一!!!!」的評論... – 2012-07-16 17:03:29

回答

0

使用這樣的函數:

def get_first_comment(post): 
    from django.contrib.comments.models import Comment 
    from django.contrib.contenttypes.models import ContentType 
    ct = ContentType.objects.get_for_model(post) 
    first_comments = Comment.objects.filter(
     content_type=ct, 
     object_id=post.pk, 
     ).order_by("submit_date") 
    if first_comments: 
     return first_comments[0] 
    return None 

它通過內容類型和對象ID進行排序由他們提交日期加載內容類型模型實例,然後過濾評論。然後,如果查詢不是空的,它將首先發表評論。