Django(1.2)表单:ManyToManyField帮助文本

8
我希望我错了,但在我看来,取消ManyToManyField的help_text唯一的方法就是编写表单的__init__方法并覆盖self.fields[fieldname].help_text。这真的是唯一的方法吗?我喜欢使用CheckboxSelectMultple小部件,那我真的必须为使用ManyToManyField的任何表单定义一个__init__方法吗?
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)
4个回答

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

1
截至1.5版本,这似乎仍然是正确的方法,尽管我相信在1.6中已经修复了这个问题。 - cms_mgr

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下测试通过


0

你也可以通过覆盖 get_form 方法在你的 Admin 类中实现它:

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

0

你没错。我自己也遇到了这个问题,所以我创建了自己的ManyToManyField来解决它。

这里有一个相关的bug,我在上面发表了评论:http://code.djangoproject.com/ticket/6183


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接