Django加入。选择数据+选择通信

2024-04-25 10:06:35 发布

您现在位置:Python中文网/ 问答频道 /正文

两种型号:

class KeywordCategory(models.Model):
    class Meta():
        db_table = 'keywords_category'
    category_name = models.CharField(max_length = 100)
...
class Keyword(models.Model):
    class Meta():
        db_table = 'keywords'
    keyword_category = models.ForeignKey(KeywordCategory)
    keyword_text     = models.CharField(max_length = 100)

我需要得到所有的类别和其中的条目计数。你知道吗

SQL语法:

SELECT keywords_category.*, COUNT(keywords.id) as count_keywords
FROM keywords_category
LEFT JOIN keywords ON keywords_category.id=keywords.keyword_category_id
GROUP by keywords_category.id

Tags: iddbmodelmodelstablelengthkeywordmax
3条回答

获取所有类别:

categories = KeywordCategory.objects.all()

计算其中的条目:

for category in categories:
    category.keyword_set.count()
keywords = KeywordCategory.objects.all()

print [(k, k.keyword_set.count()) for k in keywords]

这将返回一个字典,键将是keyword_categorytotal。你知道吗

from django.db.models import Count

kw_counts = Keyword.objects.all().values('keyword_category').annotate(
    total=Count('keyword_category')
)

相关问题 更多 >