Python Django taggit表单标签
我找到了一个解决方案,通过执行以下操作,将taggit模型中注册的标记呈现为选项列表:Python Django taggit表单标签,python,django,Python,Django,我找到了一个解决方案,通过执行以下操作,将taggit模型中注册的标记呈现为选项列表: from taggit.models import Tag class BlogPost(models.Model): tags = models.ForeignKey(Tag, on_delete=models.CASCADE, default='') (我想我更改了taggit文件夹中的某些内容,…我忘了,但我工作时没有任何问题) 但我想更改标签名称(默认情况下为“标签”) 我尝试了forms.
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',)
它显示了我期望的结果,但当我保存或发布时,它返回一个表单验证错误“无法分配“u'tag name”。“BlogPost.tags”必须是“tag”实例。”
所以有人能处理这个问题吗?谢谢你需要使用
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 )
也许更好的解决办法是使用
您需要使用
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 )
也许更好的解决办法是使用
tag没有标题(可能是因为我的修改),但第二个用于thanksglad以帮助您,标题是需要在您的列名上更改的示例。tag没有标题(可能是因为我的修改),但第二个用于thanksglad以帮助您,标题是需要在您的列名上更改的示例。