2016-08-13 1 views
0

장고의 일반적인 ListView 클래스를 기반으로 작업 테이블을 만들었습니다. 하지만 정렬 능력이 없어서 django-tables2를 사용하여 새 테이블을 생성하는 방법을 살펴 보았습니다. 설정이 매우 쉬웠지만, 기존의 ListView 클래스에서 두 가지 중요한 기능을 구현하는 방법을 모르겠습니다. 1) 페이지는 로그인 한 사용자에게만 표시되며 2) 사용자를 기반으로하는 개체를 필터링합니다.LoginRequiredMixin 및 django-tables2와 get_queryset

def car(request): 
    table = CarTable(Car.objects.all()) 
    RequestConfig(request, paginate={'per_page': 25}).configure(table) 
    return render(request, 'car.html', {'table': table}) 

새로운 tables.py :

import django_tables2 as tables 
from app.models import Feriehus 
from django.contrib.auth.mixins import LoginRequiredMixin 

class CarTable(tables.Table): 
    class Meta: 
     model = Car 
     attrs = {'class': 'paleblue'} 
     fields = ('car_id', 'type', 'price', 'year',) 

어떻게 여기

class CarList(LoginRequiredMixin, ListView): 
    model = Car 
    paginate_by = 20 

def get_queryset(self): 
    qs = super().get_queryset() 
    return qs if self.request.user.is_staff else qs.filter(bureau=self.request.user.bureau, active = 1) 

새로운 장고 - 테이블 2의 views.py의 기능입니다 : 여기

views.py 내 오래된 클래스입니다 LoginRequiredMixin을 구현합니까 (목록 페이지 만 로그인 한 사용자에게 표시)과 내 오래된 get_queryset (그래서 사용자는 django-tables2를 통해 볼 수있는 자동차 만 볼 수 있습니다)? 누구든지 도와 줄 수 있어요. 어떤 도움을 주셔서 대단히 감사합니다!

답변

1

페이지를 볼 수있는 권한을 관리하기 위해서도 여전히 기능 기반보기에 login_required 데코레이터를 사용할 수 있습니다.

from django.contrib.auth.decorators import login_required  


@login_required 
def car(request): 
    table = CarTable(Car.objects.all()) 
    RequestConfig(request, paginate={'per_page': 25}).configure(table) 
    return render(request, 'car.html', {'table': table}) 

CarTable을 초기화 할 때 올바른 필터 된 쿼리 세트를 넣어야합니다.