2010-07-13 8 views
8

Ich hoffe, dass ich falsch liege, aber es scheint mir, wie der einzige Weg, keine help_text zu haben für eine ManyToManyField eine __init__ Methode für das Formular ist schreiben und self.fields[fieldname].help_text überschreiben. Ist das wirklich der einzige Weg? Ich bevorzuge es, CheckboxSelectMultple Widgets zu verwenden, also muss ich wirklich eine __init__ Methode für jedes Formular definieren, das ManyToManyField verwendet?Django (1.2) Formulare: ManyToManyField Hilfetext

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) 

Antwort

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

Dies ist immer noch der Weg zu gehen, wie von 1,5 scheint, obwohl ich glaube, dass dies für 1,6 festgelegt ist. –

+2

Funktioniert nicht für mich in 1.6.2 = / – mkoistinen

0

Sie liegen nicht falsch. Ich bin selbst auf dieses Problem gestoßen und habe mein eigenes ManyToManyField erstellt, um das zu umgehen. Hier

ist ein verwandtes Fehler, die ich kommentiert: http://code.djangoproject.com/ticket/6183

+0

Ich war mehr Belüftung als tatsächlich zu fragen, aber danke für die Antwort. Ich gebe den Scheck. – Zach

+0

Sie sollten dem anderen die richtige Antwort geben, es funktioniert! – Julian

0

Sie sie durch zwingende get_form in Ihrem Admin-Klasse tun können:

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 einer regelmäßigen Form:

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

Wenn Sie die Zeichenfolge (i18n) ändern möchten:

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 

Getestet mit django 1.6