从 Django 模型返回多个字段

Posted

技术标签:

【中文标题】从 Django 模型返回多个字段【英文标题】:Returning more than one field from Django model 【发布时间】: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 传递给模板的代码是什么?即,您能否将负责渲染模板的视图函数的代码添加到您的帖子中? 我已将其添加到问题正文中 【参考方案1】:

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

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

【讨论】:

以上是关于从 Django 模型返回多个字段的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django 图像字段到 PIL 图像并返回?

Django 模型:覆盖字段返回值

django基础知识之模型查询:

Django 函数包含多个带返回的函数

Django 序列化器 - 返回特定字段

Django框架:模型 字段查询查询集