加入两个独立的app模型django

时间:2014-02-13 21:42:02

标签: python django

好吧所以我只有一个测试博客系统来练习我的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模型

中获取喜欢的内容

2 个答案:

答案 0 :(得分:1)

你可以使用FOO_set,docs about this here,基本上你这样做是为了得到所有喜欢:

article.likes_set.all()

你可以使用count()来获得数字

答案 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')