Формы Django (1.2): текст справки ManyToManyField - PullRequest
8 голосов
/ 14 июля 2010

Надеюсь, я ошибаюсь, но мне кажется, что единственный способ не иметь help_text для ManyToManyField - это написать __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 ]

13 голосов
/ 25 декабря 2010
class Item(models.Model):
    ...
    category = models.ManyToManyField(Category, null=True,blank=True)
    category.help_text = ''
    ...
3 голосов
/ 11 августа 2014

В обычной форме:

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 голосов
/ 19 апреля 2013

вы также можете сделать это в вашем классе администратора, переопределив 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
0 голосов
/ 14 июля 2010

Вы не ошиблись.Я сам столкнулся с этой проблемой и создал свой собственный ManyToManyField, чтобы обойти это.

Вот связанная ошибка, которую я прокомментировал: http://code.djangoproject.com/ticket/6183

...