8

我希望我错了,但在我看来,没有help_textManyToManyField 的唯一方法是为表单编写一个__init__方法并覆盖self.fields[fieldname].help_text。这真的是唯一的方法吗?我更喜欢使用CheckboxSelectMultple小部件,所以我真的必须__init__为任何使用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)
4

4 回答 4

13
class Item(models.Model):
    ...
    category = models.ManyToManyField(Category, null=True,blank=True)
    category.help_text = ''
    ...
于 2010-12-25T16:26:20.610 回答
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 测试

于 2014-08-11T06:07:48.983 回答
0

你没有错。我自己遇到了这个问题,我确实创建了自己的 ManyToManyField 来解决这个问题。

这是我评论过的一个相关错误:http: //code.djangoproject.com/ticket/6183

于 2010-07-13T23:31:17.350 回答
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
于 2013-04-19T14:11:58.523 回答