Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中将CharField呈现为静态文本?_Django_Django Forms_Django Templates - Fatal编程技术网

如何在Django中将CharField呈现为静态文本?

如何在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

我最近开始用Django编写代码,所以我的问题可能有点古怪。 最近,我需要将模型中的
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,谢谢您的回答。是的,我以前尝试过这个解决方案,但事实上,通过这种方式,编辑框被禁用,但在文本周围仍然可见。我的目标是完全删除这个编辑框,只留下纯文本而不是它,但这个我不知道如何实现。。。