2017-10-09 2 views
0

In der Hoffnung, es gibt eine schnelle glatte Django-esque Lösung für die folgende Herausforderung, die JavaScript nicht beinhaltet.Django Multiple Form als dynamische Checkboxen

Derzeit habe ich ein Formular erstellt, die eine Viele-zu-Viele-Feld als ein einfaches mehrere zeigt (das Verhalten in Django gebaut) utalising wie folgt zusammen:

Forms.py:

class ProfileForm(forms.ModelForm): 
    class Meta: 
     model = Profile 
     exclude = ['email_address'] 

Vorlage:

<form method="post">{% csrf_token %} 
    {{form}}    
    <button class="btn" type="submit">submit</button> 
</form> 

Modell:

class Profile(models.Model): 

    email_address = models.CharField(max_length = 100) 

    subscriptions = models.ManyToManyField(Item, blank=True, null=True) 

jedoch die Erfahrung für den Benutzer erleichtern (und mobile Leistung verbessern) Ich mag stattdessen würde neben jedem mit Kontrollkästchen eine Liste anzuzeigen.

Gibt es einen einfachen Weg, dies ohne JavaScript oder manuell jede Option in der forms.py zu erreichen?

Antwort

1

Viele einfache Weg, um das Widget für Abonnements in Meta Klasse von ProfileForm

class Meta: 
    model = Profile 
    exclude = ['email_address'] 
    widgets = { 
     'subscriptions': forms.CheckboxSelectMultiple, 
    } 
zu schaffen wäre
0

diese Form im Profil hinzufügen

subscriptions = forms.ModelMultipleChoiceField(
     widget=forms.CheckboxSelectMultiple 
) 

oder dieser

subscriptions = forms.ModelMultipleChoiceField(
    widget=forms.CheckboxSelectMultiple, 
    queryset=Item.objects.all() 
)