Django模型TextField不呈现

Posted

技术标签:

【中文标题】Django模型TextField不呈现【英文标题】:Django model TextField not rendering 【发布时间】:2018-04-30 03:54:24 【问题描述】:

我一直在尝试将 TextField 的内容呈现到我的 html 页面上,但它是唯一拒绝呈现的内容。会不会是那个模型的继承有问题?

这是我的模型:

class Section(models.Model):
    order_id = models.IntegerField()
    SECTION_TYPE_CHOICES = (('reg', 'regular'),
                        ('not', 'note'),
                        )
    section_type = models.CharField(
        max_length=5,
        choices=SECTION_TYPE_CHOICES,
        default='reg',
    )

class TextSection(Section):
    contents = models.TextField(blank=True, max_length=5000)

class Post(models.Model):
    post_id = models.IntegerField(unique=True)
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    slug = models.CharField(unique=True, max_length=20)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
    belongs_to = models.ForeignKey('Story')
    order_id = models.IntegerField()
    contents = models.ManyToManyField(Section, blank=True)

和模板

% extends 'stories/base.html' %

% block title %
     post.belongs_to.title  |  post.title 
% endblock %

% block content %
    <!-- Story Information -->
    <div>
        <h1> post.title </h1>
        <p>by  post.author  on   post.published_date </p>
    </div>
    <!-- Post Contents -->
    <div>
        % for section in post.contents.all %
            <div>
<!--------- Part that does not render --------->
                <p> section.contents|safe </p>
<!--------- Part that does not render --------->
                 section.order_id 

            </div>
        % endfor %
    </div>

% endblock %

它总是渲染 section.order_id 但从不渲染 section.contents

提前感谢您的任何建议。

编辑:最终删除了多态性,只是扩展了我的 Section 模型以包含各种内容。

【问题讨论】:

【参考方案1】:

Post.contents 指向 Section 模型,而不是 TextSection;部分本身没有contents 字段。如果你需要这个,你应该将你的多对多字段直接指向 TextSection。

【讨论】:

如果我向 Section 添加内容字段,TextSection 会覆盖它吗?我希望将来能够添加 ImageSection 或 VideoSection。 这个想法是让内容包含不同类型的部分,如果这有意义的话。 感谢您的回答,我最终放弃了多态性,只是扩展了我的 Section 模型。

以上是关于Django模型TextField不呈现的主要内容,如果未能解决你的问题,请参考以下文章

models.TextField() 中的换行符未在模板中呈现

textField常用的属性

如何在模型 TextField 的 HTML 中使用 Django 模板变量?

Django 文本字段模型上的 HTML 格式

Django - 不使用表单或模型表单时在模板中呈现模型选择

Django 1.7 空白 CharField/TextField 约定