如何以更新形式(django-taggit)显示 django 标签?
How to display django tags in update form (django-taggit)?
我在 django 中创建了一个基本的博客 post 应用程序,并且我正在使用 django-taggit 项目 (https://github.com/jazzband/django-taggit) 创建可标记的模型对象。但是,标签在我的更新表单字段中显示为查询集:
<QuerySet[<Tag:wow]>
这是我的 html 的样子:
<input type="text" name="tags" data-role="tagsinput" class="form-control" id="tags" name="tags" value="{{ post.tags.all }}">
我知道有一种方法可以在显示标签时循环访问它们,但是有没有一种方法可以在表单中循环访问它们?我使用单个文本字段添加标签,使用本教程以逗号分隔:
https://dev.to/coderasha/how-to-add-tags-to-your-models-in-django-django-packages-series-1-3704
我在保存标签时没有问题。我唯一的问题是在更新表单的可编辑字段中显示已存在的标签。
谢谢!
forms.py:
from taggit.forms import TagWidget
class PostForm(ModelForm):
class Meta:
model = Post
widgets = {'content_text': forms.Textarea(attrs={'cols': 80, 'rows': 80}),
'tags': TagWidget(),
}
fields = ['title', 'video_URL', 'content_text', 'score', 'tags',]
post.tags.all
是一个查询集,因此它不会被评估,因为 django 查询是 lazy 而你只是得到查询集,因为这个 returns a 数据集(如果需要,可以是数组) 不是值。试试这个:
<input type="text" name="tags" data-role="tagsinput" class="form-control" id="tags" name="tags" value="{% for tag in post.tags.all %}{{ tag }},{% endfor %}">
# I used a comma to separate them but feel free to use whatever you want
我在 django 中创建了一个基本的博客 post 应用程序,并且我正在使用 django-taggit 项目 (https://github.com/jazzband/django-taggit) 创建可标记的模型对象。但是,标签在我的更新表单字段中显示为查询集:
<QuerySet[<Tag:wow]>
这是我的 html 的样子:
<input type="text" name="tags" data-role="tagsinput" class="form-control" id="tags" name="tags" value="{{ post.tags.all }}">
我知道有一种方法可以在显示标签时循环访问它们,但是有没有一种方法可以在表单中循环访问它们?我使用单个文本字段添加标签,使用本教程以逗号分隔:
https://dev.to/coderasha/how-to-add-tags-to-your-models-in-django-django-packages-series-1-3704
我在保存标签时没有问题。我唯一的问题是在更新表单的可编辑字段中显示已存在的标签。
谢谢!
forms.py:
from taggit.forms import TagWidget
class PostForm(ModelForm):
class Meta:
model = Post
widgets = {'content_text': forms.Textarea(attrs={'cols': 80, 'rows': 80}),
'tags': TagWidget(),
}
fields = ['title', 'video_URL', 'content_text', 'score', 'tags',]
post.tags.all
是一个查询集,因此它不会被评估,因为 django 查询是 lazy 而你只是得到查询集,因为这个 returns a 数据集(如果需要,可以是数组) 不是值。试试这个:
<input type="text" name="tags" data-role="tagsinput" class="form-control" id="tags" name="tags" value="{% for tag in post.tags.all %}{{ tag }},{% endfor %}">
# I used a comma to separate them but feel free to use whatever you want