2017-09-24 91 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

很高興幫助你,標題是作爲例子它需要改變你的專欄名稱。 –