Django, как связать tableCheckBoxColumn с записью в БД - PullRequest
0 голосов
/ 14 января 2019

У меня есть модель

class MyModel(models.Model):
    enabled = models.BooleanField(default=False)
    col_1 = model.CharField(max_length=20)
    col_2 = model.CharField(max_length=20)
    ...

и стол

class MyTable(table.Tables)
    enabled = tables.CheckBoxColumn(accessor='enabled')
    col_1 = tables.Column()
    col_2 = tables.Column()
    ...

На мой взгляд, позже я получаю набор запросов в виде фрейма данных, что-то с ними делаю и отрисовываю их

def index(request):

    context = dict()
    template = 'myindex/index.html'

    entries= MyModel.objects.all()
    df = dpd.read_frame(entries)
    ...
    do stuff with df
    ...
    context['my_table'] = MyTable(df.to_dict(orient='records'))

return render(request, template, context)

Который я тогда рендую

{% load django_tables2 %}
<html>
    <body>
        {% render_table table %}
    </body>
</html>

Я ищу способ обновить базу данных при нажатии на флажки. Пока что флажки даже не принимают значения из базы данных, но все они не отмечены.

Есть ли какие-нибудь указатели на то, что хороший способ достичь этого?

Спасибо

1 Ответ

0 голосов
/ 14 января 2019

Документы на CheckboxColumn имеют довольно четкое замечание о том, что от них ожидать:

Можно ожидать, что вы можете установить несколько флажков в отображаемой> таблице и затем что-то с этим сделать. Эта функциональность не реализована. Если вы хотите, чтобы что-то действительно произошло, вам нужно реализовать это самостоятельно.

Таким образом, если вам удастся отобразить их в состоянии, соответствующем некоторому значению в db, вам все равно необходимо реализовать постоянство измененных значений.

Для этого потребуется либо пользовательская JavaScript-публикация изменений асинхронно на созданной вами конечной точке, либо упаковка всей таблицы в форму.

...