2012-12-21 3 views
3

부울 필드에 '켜기/끄기'아이콘을 표시하는 것이 바람직하지 않은 경우가 있습니다.Django의 부울 필드에 대한 켜짐/꺼짐 아이콘 사용 안 함

예 : 녹색 '확인'으로 표시 오류 또는

  • blocked=True있을 때

    • error 필드가 행복한 녹색 '확인'아이콘을 표시하는 '항목이없는'기호로 blocked=False 동안.

    그런 경우 원본을 계속 유지하는 것이 좋습니다. True/False

    예를 들어 self.error을 반환하고 short_description, ordering 등을 추가하는 것보다 더 우아한 방법이 있습니까?

  • +0

    질문을 이해했는지 확실하지 않습니다.진짜 예를 들어 자세히 설명해 주시겠습니까? – andrefsp

    +0

    'is_blocked'필드를 가진'User' 모델을 상상해보십시오. 기본 관리 위젯은 사용자가 차단 될 때 _green_ 아이콘을 표시하고 사용자가 차단되지 않은 경우 _red_ icon을 표시합니다. 반 직관적입니다. –

    답변

    9

    )를 구현하는 방법을 잘 모르겠습니다 force_unicode 또는 무언가 (에 관리자 위젯을 강요하는 것보다 이 코드 admin.py 사용에 tiness :이 방법을 사용하는 경우가 여전히 ON/OFF 아이콘이 표시됩니다

    from mysite.models import Test 
    from django.contrib import admin 
    
    class TestAdmin(admin.ModelAdmin): 
        list_display = ('is_blocked_col',) 
    
        def is_blocked_col(self, obj): 
         return not obj.is_blocked # invert the boolean value 
        is_blocked_col.boolean = True 
        is_blocked_col.admin_order_field = 'is_blocked' 
        is_blocked_col.short_description = 'Is Blocked' 
    
    admin.site.register(Test, TestAdmin) 
    

    . is_blocked=True이면 return not obj.is_blocked은 원하는대로 빨간색 아이콘으로 표시된 False을 반환 할 것입니다. 당신이 단어 True/False 대신 적색/녹색 아이콘을 사용하려면

    편집

    당신은 위의 코드에

    is_blocked_col.boolean = False

    을 설정할 수 있습니다.

    +0

    예, 의미가 있습니다. 아이디어는 예/아니오 아이콘이 좋지 않은 경우 True/False 문자열이 그다지 좋지 않다는 것입니다. 그래서 커스텀 메소드는 피할 수없는 것입니다. 'admin_order_field'를 추가하면 여전히 정렬 가능할 것이고 나는 당신의 대답을 받아 들일 것입니다. –

    +0

    @AntonyHatchkins 답변을 업데이트했습니다. 나는 또한 그것을 시험하고 모든 것은 필요한대로 작동합니다. 감사 –

    0

    자바 스크립트와 CSS로 템플릿을 디자인 할 수 있다고 생각합니다.

    당신이이 링크를 볼 수 있습니다

    : On/Off Button, IOS Buttons, Switch ButtonsCSS3 Buttns

    나는

    모하마드

    그들 중 하나를 사용하여

    행운을 빕니다 안부 너무 쉽게 생각

    +0

    추가 기능이 필요하지 않습니다. 그 반대의 경우, 단순히 'True'/'False '메시지 만 남겨두고 on/off 아이콘을 비활성화하고 싶습니다. –

    +0

    당신이 여분의 기능을 가지고있을 때 .. 그들 중 하나를 선택할 수 있습니다 – Mohammad

    +0

    나는 '예'라는 큰소리로 짖는 개와 '아니오'라는 고양이를 표시 할 수 있습니다. 그러나 그것은 내가 필요한 것이 아닙니다. 내가 진정으로 원하지 않는'True' /'False' 행동이 필요하다. –

    0

    나는 correspondingp

    is_blocked = BooleanField(default=False) 
    
    def is_blocked_col(self): 
        return self.is_blocked 
    is_blocked_col.short_description = \ 
    is_blocked_col.admin_order_field = 'is_blocked' 
    

    훨씬 덜 읽을 수

    is_blocked = BooleanField(default=False) 
    is_blocked.boolean = False 
    

    같은 이상 (하지 않는 것입니다 : 장고 코드를 onding 불행하게도이 문제는 하드 코딩 된 유일한 솔루션 있도록 것은 질문에서 언급 한 하나 작업)

    또는 내가 어떤 디렉토리가 없습니다

    +0

    내 대답을 확인 했습니까? –

    관련 문제