在学习django时,自己做了个博客站,输出到模板时,需要了几个SQL不知道怎么写的问题,特来求助。
模型如下:
模型1
class Keywords(models.Model):
keywords = models.CharField(max_length=100, verbose_name='关键词名称', unique=True)
date_publish = models.DateTimeField(auto_now_add=True, verbose_name="发布时间")
category = models.ForeignKey(Category, blank=True, null=True, verbose_name='分类') # 分类关联表
class Meta:
verbose_name = '关键词'
verbose_name_plural = verbose_name
ordering = ['-date_publish']
def __str__(self):
return self.keywords
模型2
class Article(models.Model):
title = models.CharField(max_length=150, verbose_name='文章标题', unique=True)
content = models.TextField(verbose_name='文章内容')
describe = models.CharField(max_length=500, verbose_name='文章描述', blank=True, null=True)
date_publish = models.DateTimeField(auto_now_add=True, verbose_name="发布时间")
keywords = models.ForeignKey(Keywords, blank=True, null=True, verbose_name='关键词')
class Meta:
verbose_name = '文章'
verbose_name_plural = verbose_name
ordering = ['-date_publish']
def __str__(self):
return self.title
粗略的说就是,Article
模型下的keywords_id
字段是Keywords
表下keywords
字段外键;
1,统计Keywords
表中的keywords
,有文章的keywords
(不重复)总数。
2,分别读出Keywords
表中的keywords
下有文章和无文章的数据;
3,Keywords
表中按时间倒叙读出keywords
下文章的数据(含有或无);
谢谢~~~
给出常规思路,先查article中所有的keywords 的ids,再用filter查keyword中ID不在ids中的keywords,至于排序简单啦!虽然查询了两次,但效率我感觉还可以!