2010-07-13 22 views
8

Espero estar equivocado, pero parece a mí como la única manera de no tener help_text para un ManyToManyField es escribir un método __init__ para la forma y sobrescribir self.fields[fieldname].help_text. ¿Es esa la única manera? Prefiero usar widgets CheckboxSelectMultple, entonces, ¿realmente voy a tener que definir un método __init__ para cualquier formulario que use un ManyToManyField?Django (1.2) Formas: ManyToManyField texto de ayuda

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) 

Respuesta

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

Este sigue siendo el camino a seguir desde el 1.5, parece, aunque creo que esto está arreglado para 1.6. –

+2

No funciona para mí en 1.6.2 = / – mkoistinen

0

Usted no está equivocado. Me encontré con este problema y creé mi propio ManyToManyField para evitar esto.

Aquí hay un error relacionado que comenté: http://code.djangoproject.com/ticket/6183

+0

estaba más ventilación que pidiendo en realidad, pero gracias por la respuesta. Daré el cheque. – Zach

+0

debes darle al otro chico la respuesta correcta, ¡funciona! – Julian

0

también puede hacerlo en su clase de administración reemplazando 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 
3

En una forma regular:

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

Si desea cambiar la cadena (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 

probado con Django 1.6

Cuestiones relacionadas