2017-09-24 75 views
1

我已经找到了解决方案通过执行来呈现taggit车型作为选择列表中注册标签:Django的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'tag name'“:”BlogPost.tags“必须是”标记“实例。

所以有人可以对此进行处理并感谢

回答

1

你需要使用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) 
+0

标签没有标题(也许是因为我的修改),但第二个作品感谢 – a7me3D

+0

很高兴帮助你,标题是作为例子它需要改变你的专栏名称。 –