【问题标题】:accessing many to many data in template访问模板中的多对多数据
【发布时间】:2013-04-20 16:41:31
【问题描述】:

我有两个模型,一个以多对多关系引用另一个(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 数据以便在模板中显示它的正确模板语言?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2012-12-31
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多