2010-07-13 76 views
8

我希望我錯了,但是在我看來,唯一沒有help_text的方法是爲一個ManyToManyField寫一個__init__方法,並覆蓋self.fields[fieldname].help_text。這真的是唯一的方法嗎?我更喜歡使用CheckboxSelectMultple小部件,所以我真的不得不爲任何使用ManyToManyField的表單定義__init__方法嗎?Django(1.2)Forms:ManyToManyField幫助文本

class ManyToManyField(RelatedField, Field): 
    description = _("Many-to-many relationship") 
    def __init__(self, to, **kwargs): 
     #some other stuff 
     msg = _('Hold down "Control", or "Command" on a Mac, to select more than one.') 
     self.help_text = string_concat(self.help_text, ' ', msg) 

回答

13
class Item(models.Model): 
    ... 
    category = models.ManyToManyField(Category, null=True,blank=True) 
    category.help_text = '' 
    ... 
+1

儘管我認爲這是固定的1.6,但它仍然是1.5版的方式。 – 2013-07-02 11:56:32

+2

1.6.2不適合我= = / – mkoistinen 2014-03-16 20:28:23

0

你沒有錯。我自己遇到了這個問題,並且爲了解決這個問題,我創建了自己的ManyToManyField。

這裏是一個相關的錯誤,我發表了評論:http://code.djangoproject.com/ticket/6183

+0

我比實際要求更透氣,但感謝您的答覆。我會給支票。 – Zach 2010-07-14 14:08:40

+0

你應該給其他人正確的答案,它的作品! – Julian 2011-12-12 20:45:27

0

,你也可以通過替換get_form做在您的管理類:

class FooAdmin(ModelAdmin): 
    ... 
    def get_form(self, request, obj=None, **kwargs): 
     form = ModelAdmin.get_form(self, request, obj=obj, **kwargs) 
     form.base_fields['bar'].widget = CheckboxSelectMultiple() 
     form.base_fields['bar'].help_text = '' 
     return form 
3

在常規形式:

MyForm.base_fields['many_to_many_field'].help_text = '' 

如果要更改(i18n)字符串:

class MyForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 
     self.base_fields['many_to_many_field'].help_text = _('Choose at least one stuff') # or nothing 

測試和Django 1.6