2016-07-16 2 views
0

나는이 테이블을 항목의 부울 값을 반대 값으로 변경하는 클릭 가능한 필드로 만들려고합니다. 그것은 작동하지만, 나는 "거짓"또는 "사실"로 대체 텍스트를 원해 보이지 않는데, 사용자는 주로 노르웨이어입니다.Django-tables2 - "text"매개 변수에서 [A ('argument')]를 사용할 수 없습니까?

def bool_to_norwegian(boolean): 
    if boolean: 
     return "Ja" 
    else: 
     return "Nei" 


class OrderTable(tables.Table): 

    id = tables.LinkColumn('admin_detail', args=[A('id')]) 
    name = tables.Column() 
    address = tables.Column() 
    order = tables.Column() 
    order_placed_at = tables.DateTimeColumn() 
    order_delivery_at = tables.DateColumn() 
    price = tables.Column() 
    comment = tables.Column() 
    sent = tables.LinkColumn('status_sent', args=[A('id')]) 
    paid = tables.LinkColumn('status_paid', args=[A('id')], text=[A('paid')]) 

    class Meta: 
     attrs = {'class': 'order-table'} 

당신은 내가처럼, 이유는 인수에 동일한 접근으로 데이터에 액세스 할 수 없습니다 지금이 권리를 테스트하고있는 "지불"항목 아래에 보면? args를 args = [A ('paid')]로 변경하고 링크를 살펴 본다면 실제로 해당 데이터가 올바른 것입니다. 모델 이름은이 표의 모델 이름과 동일하며 "지불 됨"및 "전송 됨"은 BooleanFields입니다.

다음
text=bool_to_norwegian([A('paid')]) 

내가 테이블에 보낼 것입니다 :

내가 궁극적으로 원하는 종류입니다 text 인수가 기록을 받아들이는 호출을 기대

orders = Order.objects.order_by("-order_delivery_at") 
orders = orders.values() 
table = OrderTable(orders) 
RequestConfig(request).configure(table) 

답변

0

,과를 반환 텍스트 값. 목록을 전달하면 (그냥 무시할 것입니다) 함수가 레코드 대신 부울을 기다리고 있습니다. 접근자를 사용할 필요도 없습니다.

이런 식으로 뭔가 작동합니다 :

def bool_to_norwegian(record): 
    if record.paid: 
     return "Ja" 
    else: 
     return "Nei" 

를 그런 다음 열에 :

paid = tables.LinkColumn('status_paid', text=bool_to_norwegian) 

(참고,이 데이터에서 오는 질문에서 명확하지 것은 - paid 부울입니다 ? 적합하게 조정해야 할 수도 있습니다.)

제쳐두고 args을 열로 전달하는 방법이 이상합니다 (문서에서도이 방법을 권장하는 것으로 보이지만 이해가되지 않습니다 - 매우 혼란 스럽습니다). 보다 표준 접근 방식은 다음과 같습니다

id = tables.LinkColumn('admin_detail', A('id')) 

또는 사용하여 명명 된 인수 :

id = tables.LinkColumn('admin_detail', accessor=A('id')) 
+0

은 "지불"과 "전송"이다 불린 예. 테이블을 제공하는 값은 사전 목록입니다. for 루프를 정독하고 사전에 프로그래밍 방식으로 노르웨이어로 읽도록 항목을 변경 할 수 있지만 제공된 것과 같은 기능을 사용하는 것보다 더 많은 세금을 부과합니까? 하지만 당신이 말한 것처럼 테이블을 변경했고이 오류가 발생했습니다 : \t 'dict'객체에는 '지불 됨'속성이 없습니다. 어떤 식으로 사전이 어떻게 보이는지 알면 이상합니다. http://pastebin.com/driAQ0yv –

+0

'record [ 'paid']'를 사용하면 효과가 있습니다. 나는 그것이 그것이 dict 대신에 객체라고 생각했다. – solarissmoke

+0

정말 고마워요. 나는 "A ('id')"를 시도하고이 오류를 던졌다. "포함 된 URLconf '24'에 패턴이없는 것 같습니다. 파일에서 유효한 패턴을 발견하면 문제가 발생한 것일 수 있습니다. 순환 수입. " 너 호기심이라면. –