0

我有两个模型,一个以多对多关系引用另一个模型(BannerProject 对象可能包含 BannerEntry 对象的多个实例):

class BannerEntry(models.Model):
    title = models.CharField(max_length=100, unique=False, blank=False, null=False)
    has_static = models.BooleanField()
    has_flash = models.BooleanField()
    static_preview = models.FileField(upload_to=content_banner_page, blank=True, null=True, max_length=300)
    static_zip = models.FileField(upload_to=content_banner_page, blank=True, null=True, max_length=300)
    ...

class BannerProject(models.Model):
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    project_name = models.CharField(max_length=100, unique=False, blank=False, null=False)
    parent_page = models.ForeignKey(BannerPage, blank=True, null=True)
    banner_entry = models.ManyToManyField(BannerEntry)

    def __unicode__ (self):
            return u'%s %s' % (self.client, self.project_name)

    class Admin: 
            pass

运行一个基本的视图函数:

def display_bannerpage(request, client):
    records = BannerPage.objects.filter(client=client)
    bprjrecords = BannerProject.objects.filter(client=client)
    tpl = 'clientportal_tmps/bannerpage.html'
    return render_to_response(tpl, { 'records': records, 'bprjrecords': bprjrecords })

我想在模板中显示它们(BannerProject、子 Entry1 字段、childEntry2 字段、子 Entry3 字段……下一个 BannerProject 等……):我当前的模板看起来像:

{% if bprjrecords %}
{% for bprjrecord in bprjrecords %}

{% for banner_entry in bprjrecord %}
{{ banner_entry.title }}
{{ banner_entry.static_preview }}
{{ banner_entry.static_zip }}
{% endfor %}

引发 TypeError “'BannerProject' 对象不可迭代”

什么是允许我访问 BannerEntry 数据以便在模板中显示它的正确模板语言?

4

1 回答 1

0

您正在尝试迭代 BannerProject,而不是该项目的 BannerEntry 列表。尝试这个:

{% for banner_entry in bprjrecord.banner_entry.all %}
    {{ banner_entry.title }}
    {{ banner_entry.static_preview }}
    {{ banner_entry.static_zip }}
{% endfor %}
于 2013-04-26T13:26:41.597 回答