我找到了一个解决方案,通过执行以下方式将taggit模型中注册的标签作为选项列表进行渲染:
from taggit.models import Tag
class BlogPost(models.Model):
tags = models.ForeignKey(Tag, on_delete=models.CASCADE, default='')
(我想改变了taggit文件夹中的内容,......我忘了,但我的工作没有任何问题)
但我想更改标签名称("标签"默认情况下)
我在forms.py中试过:
imports ...
class PostForm(forms.ModelForm):
tag = [(i, i) for i in Tag.objects.all()]
tags = forms.ChoiceField(label='another label name', choices=tag )
class Meta:
model = BlogPost
fields = ('tags',)
它显示了我预期的结果,但是当我保存或POST时,它会返回表单验证错误'无法分配" u'标记名称'":" BlogPost .tags添加"必须是"标签" 。实例'
所以有人可以处理这个并且谢谢
答案 0 :(得分:0)
您需要使用pk
作为密钥
class PostForm(forms.ModelForm):
tag = [(i.pk, i.title) for i in Tag.objects.all()]
# ^^^^^
tags = forms.ChoiceField(label='another label name', choices=tag )
可能更好的解决方案是使用ModelChoiceField
tags = forms.ModelChoiceField(queryset=Tag.objects.all(), empty_label=None)