好吧所以我只有一个测试博客系统来练习我的django技能。我有两个应用程序,一个名为文章,称为喜欢这里他们是:
文章模型:
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length = 200)
description = models.TextField()
pub_date = models.DateTimeField('Date Published',auto_now = True)
def __str__(self):
return self.title
以下是喜欢的型号:
from django.db import models
from apps.article.models import Article
# Create your models here.
class Like(models.Model):
article_id = models.ForeignKey(Article)
likes = models.IntegerField(default = 0)
def __str__(self):
return self.Likes
现在我正在渲染页面,但我想显示每篇文章有多少喜欢。我如何加入这两个模型。更改objects.all方法也可以从Like模型
中获取喜欢的内容答案 0 :(得分:1)
答案 1 :(得分:1)
首先,您可能希望将article_id重命名为article,因为当您使用该属性时,您实际上会获得文章而不仅仅是id。
在这种情况下,您似乎在Like和Article之间存在多对一关系。这意味着您需要将喜欢称为喜欢' like_set'。因此,如果您碰巧将对象存储在文章中,则可以使用article.like_set.all()
获取所有相关内容并使用article.like_set.count()
获取该计数。
参考:https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_one/
如果您对提取此内容感兴趣,可以使用prefetch_related来保存其他数据库调用:
https://docs.djangoproject.com/en/1.4/ref/models/querysets/#prefetch-related
它想要这样的东西:
articles = Article.objects.all().prefetch_related('like_set')