如何通过模型获取对象?

时间:2013-12-25 15:01:18

标签: django django-models django-queryset django-orm

我有这样的模特:

class PortfolioAlbum(models.Model):
    title = models.CharField()

class Portfolio(models.Model):
    title = models.CharField() 
    photo = models.ManyToManyField(PortfolioAlbum, through='AlbumPhotos')


class AlbumPhotos(models.Model):
    album = models.ForeignKey(PortfolioAlbum)
    portfolio = models.ForeignKey(Portfolio)
    title = models.CharField()
    photo = ThumbnailerImageField()

如何在我的“投资组合”页面的上下文中获取我的AlbumPhotos(字段 - “照片”)?

我最后一次尝试过:

<ul>
{% for albumphotos in portfolios %}
<li><img src="{{ albumphotos.photo.image150x150.url }}"></li>
{% endfor %}
</ul>

..也有一些例子,但这是错误的。

2 个答案:

答案 0 :(得分:0)

Photo应该是一个完全成熟的模型,并且与Album有一个外键或m2m关系。

无论如何,要了解模型的记录,请执行以下操作:

portfolio = Portfolio.objects.get(…)
photos = portfolio.photo.through.filter(portfolio=portfolio)

这真是奇怪的关系......

相反,你应该写:

portfolio = Portfolio.objects.get(…)
for album in portfolio:
    for photo in album:
        print photo

答案 1 :(得分:0)

来自https://docs.djangoproject.com/en/1.7/topics/db/queries/#backwards-related-objects

使用:

protifolio.albumphoto_set.all()

将所有AlbumPhoto附加到protfolio实例。当使用多对一关系时,Django将通过 foo_set 自动设置反向关系。

很晚,但无论如何,我发布了记录