我正在尝试将标记列表显示为tag.name(而不是列表)。但是,当我尝试在列表上运行for循环时,它会在渲染时抛出“Caught TypeError:'BoundField'对象不可迭代。”
<dd>{% for tag in form.tags %}{{tag.name}}{% endfor %}</dd>
迭代.all将加载页面,但不显示Tags字段。
<dd>{% for tag in form.tags.all %}{{tag.name}}{% endfor %}</dd>
class Profile(models.Model):
user = models.ForeignKey(User)
tagging.register(Profile)
form = ProfileForm(initial={
"fullname":fullname,
"location":request.user.get_profile().location,
"website":request.user.get_profile().website,
"twitter_account":request.user.get_profile().twitter_account,
"email":request.user.email,
"bio":request.user.get_profile().bio,
"tags":request.user.get_profile().tags
})
class ProfileForm(forms.Form):
fullname = forms.CharField(
label=_("Full Name"),
widget=forms.TextInput(),
required=False)
location = forms.CharField(
label=_("Location"),
widget=forms.TextInput(),
required=False)
website = forms.CharField(
label=_("Website"),
widget=forms.TextInput(),
required=False)
twitter_account = forms.CharField(
label=_("Twitter"),
widget=forms.TextInput(),
required=False)
bio = forms.CharField(
label=_("Bio"),
widget=forms.Textarea(),
required=False)
tags = forms.CharField(
label=_("Keywords"),
widget=forms.Textarea(),
required=False)
非常感谢提前!
答案 0 :(得分:1)
<小时/> 模板:
{% for tag in blogpost.get_tags %}
<a href="/blog/tag/{{tag}}" alt="{{tag}}" title="{{tag}}">{{tag}}</a>
{%endfor%}
from django.db import models
from tagging.fields import TagField
from tagging.models import Tag
class BlogPost(models.Model):
title = models.CharField(max_length=30)
body = models.TextField()
date_posted = models.DateField(auto_now_add=True)
tags = TagField()
def set_tags(self, tags):
Tag.objects.update_tags(self, tags)
def get_tags(self, tags):
return Tag.objects.get_for_object(self)
答案 1 :(得分:0)
{% for tag in form.tags.choices %}{{tag.1}}{% endfor %}
答案 2 :(得分:0)
form.tags
在您的表单中定义为CharField
,其中包含TextArea
小部件。因此,当您访问form.tags
时,您正在访问该字段,而不是基础tags
模型属性(我假设它是某种m2m)。
如果没有看到你的模型,就不可能确切地告诉你如何实现你想要做的事情,但总的想法是你需要迭代标签对象,而不是表单字段。