如何在Django中将CharField呈现为静态文本?
我最近开始用Django编写代码,所以我的问题可能有点古怪。 最近,我需要将模型中的如何在Django中将CharField呈现为静态文本?,django,django-forms,django-templates,Django,Django Forms,Django Templates,我最近开始用Django编写代码,所以我的问题可能有点古怪。 最近,我需要将模型中的CharField字段呈现为简单的html静态文本,但我发现在这种情况下,它似乎不像我想象的那么简单,或者我做错了什么 我有这个模型: class Tag(models.Model): CATEGORIES = ( (0, 'category0'), (1, 'category1'), (2, 'category2'), (3, 'cat
CharField
字段呈现为简单的html静态文本,但我发现在这种情况下,它似乎不像我想象的那么简单,或者我做错了什么
我有这个模型:
class Tag(models.Model):
CATEGORIES = (
(0, 'category0'),
(1, 'category1'),
(2, 'category2'),
(3, 'category3'),
(4, 'category4'),
(5, 'category5'))
name = models.CharField(max_length=20)
description = models.CharField(max_length=100, blank=True)
category = models.IntegerField(default=0)
user = models.ForeignKey(User)
表格类别为:
class TagForm(ModelForm):
category = ChoiceField(choices=Tag.CATEGORIES)
class Meta:
model = Tag
在视图中,我在一个表单中创建具有多个标记
对象的表单集,并为其中的每个标记
对象提供标记表单
类:
TagsFormSet = modelformset_factory(Tag,exclude=('user'),form=TagForm,extra=0)
form = TagsFormSet(queryset=all_tags)
在模板中,我有:
{{ form.management_form }}
{% for tagform in form.forms %}
{{ tagform }}
<hr>
{% endfor %}
{{form.management\u form}
{form.forms%中的标记形式为%s}
{{tagform}}
{%endfor%}
但是在html中,模型的“名称”和“描述”字段总是作为输入文本字段呈现。我希望它们在html中与普通静态文本一样,没有任何内容(在html中,目前我只需要显示它们)。对于这种情况,有什么快速解决方案吗?将字段呈现为只读可能就足够了(因此浏览器拒绝修改数据),请参阅。如果您绝对希望仅呈现文本,则需要定义自定义小部件,然后将表单字段映射到此小部件。在小部件的render()方法中,只输出字段值。如果不需要输入字段,为什么要使用Django的表单
您也可以向模板提供一个对象列表,并以任何方式呈现对象字段。在表单的元类中,添加以下内容以删除字段
exclude = ('name', 'description'),
然后使用显示模板中的值
{{ tagform.instance.name }}
{{ tagform.instance.description }}
此外,choices参数应传递到category model字段;这样,您就不需要在表单中明确定义字段。嗨,Martin,谢谢您的回答。是的,我以前尝试过这个解决方案,但事实上,通过这种方式,编辑框被禁用,但在文本周围仍然可见。我的目标是完全删除这个编辑框,只留下纯文本而不是它,但这个我不知道如何实现。。。