2010-07-13 3 views
8

Spero di sbagliarmi, ma mi sembra che l'unico modo per non avere help_text per un ManyToManyField sia scrivere un metodo __init__ per il modulo e sovrascrivere self.fields[fieldname].help_text. È davvero l'unico modo? Preferisco utilizzare i widget CheckboxSelectMultple, quindi dovrò davvero definire un metodo __init__ per qualsiasi modulo che utilizza uno ManyToManyField?Django (1.2) Moduli: ManyToManyField Testo di aiuto

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) 

risposta

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

Questa è ancora la strada da percorrere a partire da 1.5 sembra, anche se credo che questo sia corretto per 1.6. –

+2

Non funziona per me in 1.6.2 = / – mkoistinen

0

Non hai sbagliato. Mi sono imbattuto in questo problema e ho creato il mio ManyToManyField per aggirare questo problema.

Ecco un bug correlato che ho commentato: http://code.djangoproject.com/ticket/6183

+0

ero più sfiato che in realtà chiedere, ma grazie per la risposta. Darò il conto. – Zach

+0

dovresti dare all'altro la risposta giusta, funziona! – Julian

0

si può anche farlo nella classe Admin sovrascrivendo 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

In una forma regolare:

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

Se si desidera modificare la stringa (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 

testato con Django 1.6