【问题标题】:Django (1.2) Forms: ManyToManyField Help TextDjango (1.2) 表单:ManyToManyField 帮助文本
【发布时间】:2010-07-13 22:50:14
【问题描述】:

我希望我错了,但在我看来,让 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)

【问题讨论】:

    标签: python django django-forms manytomanyfield


    【解决方案1】:
    class Item(models.Model):
        ...
        category = models.ManyToManyField(Category, null=True,blank=True)
        category.help_text = ''
        ...
    

    【讨论】:

    • 这似乎仍然是 1.5 的方式,尽管我相信这在 1.6 中是固定的。
    【解决方案2】:

    常规形式:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您也可以通过覆盖 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
        

        【讨论】:

          猜你喜欢
          • 2021-10-27
          • 2011-06-15
          • 2015-08-30
          • 1970-01-01
          • 2014-08-12
          • 2010-12-31
          • 2012-08-19
          • 2010-11-01
          相关资源
          最近更新 更多