代码之家  ›  专栏  ›  技术社区  ›  Zach

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

  •  8
  • Zach  · 技术社区  · 14 年前

    我希望我错了,但在我看来,这是唯一一个没有错误的方法 help_text __init__ 窗体和覆盖的方法 self.fields[fieldname].help_text CheckboxSelectMultple 小部件,那么我真的要定义一个 __初始化__ 任何使用 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 回复  |  直到 14 年前
        1
  •  13
  •   Raul    14 年前
    class Item(models.Model):
        ...
        category = models.ManyToManyField(Category, null=True,blank=True)
        category.help_text = ''
        ...
    
        2
  •  3
  •   laffuste user5637641    10 年前

    以常规形式:

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

    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测试

        3
  •  0
  •   Matthew J Morrison    14 年前

    下面是我评论的一个相关bug: http://code.djangoproject.com/ticket/6183

        4
  •  0
  •   Karolis Ryselis    11 年前

    您也可以在Admin类中通过重写get\ U窗体来执行此操作:

    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