【问题标题】:Returning more than one field from Django model从 Django 模型返回多个字段
【发布时间】:2014-01-03 22:46:23
【问题描述】:

如何从 Django 模型声明中返回多个字段?

例如:我已经定义了:

class C_I(models.Model):
    c_id = models.CharField('c_id', max_length=12)
    name = models.CharField('name', max_length=100)
    def __str__(self):
        return '%s' % (self.name)

当在 views.py 函数中调用以返回时,我可以使用它

    {{ c_index }}

        {% for c in c_index %}

            <div class='c-index-item' c-id=''>

                <p>{{ c.name }}</p>

            </div>

        {% endfor %}

来自模板。这在我的views.py中被调用,如下所示:

c_index = C_I.objects.all()

t = get_template('index.html')

c  = Context({'c_index': c_index})

html = t.render(c)

我如何也包括上面模型中定义的 c_id,以便我可以在我的模板中包括 {{c.name}} 和 {{c.c_id}}?当我删除 str 方法时,我似乎得到了所有结果,但是,它只返回模板中的空白条目,并且不允许我引用对象的各个组件。

【问题讨论】:

  • 我试过 return '%s %s' % (self.name, self.c_id) 并且还 return '%s, %s' % (self.name, self.c_id)跨度>
  • 您正在将 Calendar 对象列表从视图函数传递给模板以进行渲染,因此对于个别实例,您应该能够访问 Calendar 模型定义的任何属性(无需定义__str__ 方法)。尝试将&lt;p&gt; 标记的内容更改为{{ c.c_id }}, {{ c.name }}。访问视图时是否会导致任何错误?
  • 它不会导致错误,但它是空白的。此外,当我打印如上定义的 c_index 时,我只得到名称和 c_id,但如果我注释掉 str 方法,我得到一个日历项数组
  • c_index 传递给模板的代码是什么?即,您能否将负责渲染模板的视图函数的代码添加到您的帖子中?
  • 我已将其添加到问题正文中

标签: python django django-templates


【解决方案1】:

你所拥有的一切都很好。您的模板应该是:

    {% for c in c_index %}
        <div class='c-index-item' c-id='{{ c.c_id }}'>
            <p>{{ c.name }}</p>
        </div>
    {% endfor %}

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多