Получение полей с использованием класса ListView из Django - PullRequest
0 голосов
/ 03 апреля 2020

Я учусь управлять ListView class из django, получить данные действительно легко.

from django.views.generic import ListView
from .models import Fleet

class fleet_bbdd_view(ListView):
    template_name = 'data_app/fleets-bbdd.html'
    paginate_by = 20
    model = Fleet
    context_object_name = 'FleetsList'

Но я не могу найти, как получить поля моей модели и передать им в моем контексте объект. Можно ли сделать это, используя ListView class?

Я знаю, как получить его, в обычной функции, но если это возможно, я предпочитаю использовать ListView class.

def getData(request):
    cols = [i.name for i in Fleet._meta.get_fields()]
    ctx = {'Cols':cols}
    return JsonResponse(ctx)

Кто-нибудь может мне помочь? Большое спасибо.

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Если я правильно понимаю, вы пытаетесь включить имена полей в свой контекст. Вы можете сделать это аналогично тому, как вы задали переменную cols в своем вопросе, но вам нужно переопределить get_context_data (), чтобы получить ее в контексте, как сказал @dirkgroten.

class fleet_bbdd_view(ListView):
    template_name = 'data_app/fleets-bbdd.html'
    paginate_by = 20
    model = Fleet
    context_object_name = 'FleetsList'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['cols'] = [i.name for i in Fleet._meta.get_fields()]
        return context

1 голос
/ 03 апреля 2020

Как сказал @dirkgroten, вы можете переопределить get_context_data(), но вызывая его super. Вот хорошее место, чтобы взглянуть на функции, которые вы можете переопределить, и на то, что они делают: https://ccbv.co.uk/.

Если вам нужно использовать только объекты Fleet в вашем шаблоне, вы назвали их FleetsList, выполнив context_object_name = 'FleetsList'. Это добавит список объектов в контекст, подобный context = {'FleetsList': queryset}.

...