Cum se obține informații de pe rândul Django_tables2?

Am declarat o masă și vreau să aduc valoarea rândului care este verificată utilizând checkboxfield. Orice ajutor, cum pot scrie acest eveniment în opiniile mele, astfel încât, de fiecare dată când selectez un rând și apăsa butonul de trimitere, acesta returnează valorile rândului. Codul merge astfel:

    class mytables(tables.Table):
          new_database = tables.CheckBoxColumn()
          student =tables.Column(accessor='Student')
          Class = tables.Column(accessor='class')

Și în șabloanele mele un buton de trimitere.

4

1 răspunsuri

Trebuie să alegeți o valoare corespunzătoare pentru CheckBoxColumn . În general, dacă afișați un queyset, veți folosi codul pk al fiecărui obiect pentru CheckBoxColumn . În cazul tău ar arăta:

class EnrollmentTable(tables.Table):
    selection = tables.CheckBoxColumn(accessor='pk')
    student = tables.Column()
    class = tables.Column()

Apoi, va trebui să redați tabelul într-un formular, astfel încât utilizatorul să poată trimite formularul, de exemplu:

<form action="/someurl/" method="post">
    {% load render_tables from django_tables2 %}
    {% render_table table %}
    <input type="submit"/>
</form>

Apoi, veți avea nevoie de o vizualizare conectată la /someurl/. În cazul dvs., vizualizarea va trebui să privească selecția POST variabila selection :

def someview(request):
    if request.method == "POST":
        pks = request.POST.getlist("selection")
        selected_objects = SomeModel.objects.filter(pk__in=pks)
        # do something with selected_objects
    else:
        # ...
14
adăugat
Multumesc pentru soluție, dar în timp ce depanare văd că pks este o listă care conține doar Nici unul ca în dacă i selectați două rânduri apoi [u'None, u'None] ... orice gânduri despre asta?
adăugat autor Karan, sursa
Mulțumesc mult că am uitat să includă valoarea pk în queryset. Este bine de lucru.
adăugat autor Karan, sursa
Mare răspuns, mulțumesc
adăugat autor Davy, sursa
Se pare că nu folosiți obiecte de model salvate ca date de tabel.
adăugat autor bradley.ayers, sursa
Răspuns rațional. Se pare ciudat că acest lucru nu este inclus în documentația oficială
adăugat autor tomnl, sursa