Django Darstellung einer M2M abfrage auf der Website

Django, Flask, Bottle, WSGI, CGI…
Antworten
Metatron
User
Beiträge: 42
Registriert: Donnerstag 10. Mai 2018, 08:35

Mein Problem ist das M2M Field, ich würde es gerne wie in https://i.stack.imgur.com/3KSpq.png, darsellen.

Ich habe folgende Modell Classe

Code: Alles auswählen

class A (models.Model):
    name = models.CharField (max_length = 250)
    Bs = models.ManyToManyField ('B')
    Cs = models.ManyToManyField ('C')
und die Form classe sieht wie folgt aus:

class AForm (forms.ModelForm):

Code: Alles auswählen

    class meta:
        model = A

        fields = ['name', 'Bs']
        labels = {'name': 'name',
                  'Bs': 'list of B',
                  'Cs': 'list of C'}
nun möchte ich dies auf der Website darstellen. Um das M2M FIeld anzupassen und alle anderen Felder standartmässig rendern zu lassen müsste ich jedoch rausfinden wie ich abfragen kann ob ein Feld das ModelMultipleChoiceField feld ist:

Code: Alles auswählen

                {% for field in AForm %}

                    {% if field.field == ModelMultipleChoiceField %}
                        blah
                    {% else %}   
                        {{field}}    
                    {% endif %}
                {% endfor %}
Leider bekomme ich das nicht hin, wie müsste die if Anweisung aussehen?
Ein weiteres Problem ist, das wenn ich das M2M Field einfach mit {{ field }} rendere, das dann nur die IDs angezeigt werden, so wie hier:

Code: Alles auswählen

B (1)
B (2)
B (3)
B (4)
B (5)
B besitzt jedoch ein Vor und Nachname, daher wäre es schön wenn es wie folgt gelistet wird:

Code: Alles auswählen

Vorname1 Nachname1
Vorname2 Nachname2
Vorname3 Nachname3
Vorname4 Nachname4
Vorname5 Nachname5
Gibt es eventuell schon ein fertiges Widget das mir das M2M Field wie in dem Bild darstellt?
Antworten