2012-12-25 7 views
0

Django admin docs은 호출 가능을 list_display에서 사용할 수있는 값으로 지정할 수 있다고 말합니다. 함수 인수를 통해 함수에 몇 가지 추가 컨텍스트를 전달해야하는 경우이를 수행하는 가장 좋은 방법은 무엇입니까?list_display 함수를 사용하여 인수를 전달하는 방법은 무엇입니까?

의사 코드에서

, 내가 뭘하려는 것은 같은 :

애플리케이션 realestate :

models.py :

class A(models.Model): 
    raw = models.TextField() 

admin.py :

from utils import processing 

list_display = [processing('realestate app result', True)] 

앱 파티 :

models.py :

class Person(models.Model): 
    raw = models.TextField() 

admin.py :

from utils import processing 

list_display = [processing('party app result', False)] 

utils.py :

def processing(obj, short_description, allow_tags=False): 
    def process(obj): 
     # do something 
     pass 
    process.short_description = short_description 
    process.allow_tags = allow_tags 

    return process(obj) 
+0

이 방법으로 인수를 전달할 수 없으면 셀은 표현하는 모델을 기반으로 렌더링 자체를 알아야합니다. 어떤 논쟁을해야합니까? 귀하의 상황을 설명하고 우리는 당신이 문제를 해결해야 볼 것입니다 – YardenST

+0

@ YardenST이 질문을 감사, 감사합니다. – Paolo

답변

3

당신은 내부의 short_descriptionallow_tags 지정하지 않아야합니다 기능 자체.

은 다음과 같이 처리를 정의

utils.py : 각 ModelAdmin 클래스에

def processing(obj): 
     #do something 
     pass 

이 수행

class RealestateAdmin(...): 
    list_display = [processing,] 

    def processing(obj): 
     return utils.processing(obj) 
    processing.short_description = 'realestate app result' 
    processing.allow_tags = True 


class PartyAdmin(...): 
    list_display = [processing,] 

    def processing(obj): 
     return utils.processing(obj) 
    processing.short_description = 'party app result' 
    processing.allow_tags = False 

그래서 당신이 (utils.py) 한 곳이 논리를 포함하고 있습니다. 그리고 모든 클래스는 테이블에 표시 할 속성을 정의합니다.

+0

'process' 함수를 정의 할 필요가 없다는 것을 정의하십시오. – Paolo

+1

@Guandalino 네, 내 실수 .. 대답 편집 중입니다. – YardenST