Python Django 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.

我找到了一个解决方案,通过执行以下操作,将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',)
它显示了我期望的结果,但当我保存或发布时,它返回一个表单验证错误“无法分配“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以帮助您,标题是需要在您的列名上更改的示例。