想用django实现统计sql语法,这样的该怎么写呢

在学习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下文章的数据(含有或无);

谢谢~~~

阅读 2.5k
1 个回答

给出常规思路,先查article中所有的keywords 的ids,再用filter查keyword中ID不在ids中的keywords,至于排序简单啦!虽然查询了两次,但效率我感觉还可以!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进