2015-01-28 6 views
1

"다른 추가"링크를 숨기고 "저장하고 계속 편집"버튼을 계속 눌러 다른 라인을 추가 할 수 있습니까?Django : admin 더하기 추가 버튼

+2

예, 가능합니다. 장고 관리 템플릿을 사용자 정의해야합니다. 이 링크를 확인하십시오 : [장고 관리자 템플릿을 덮어 쓰고 확장하는 법] (http://stackoverflow.com/questions/6583877/how-to-override-and-extend-basic-django-admin-templates), [장고 관리 : 모델의 사용자 정의 템플릿] (http://stackoverflow.com/questions/20092749/django-admin-custom-template-for-a-particular-model) – AlvaroAV

+0

나는 이미 이름이 template_base.html 인 템플릿으로 관리자를 사용자 정의했습니다. – Patrice

+0

이 서식 파일의 경로는 무엇입니까? 'templates/admin/base_site.html'이어야합니다. – AlvaroAV

답변

0

나는 미디어 클래스의 CSS 파일과 함께 해결책을 발견?

+0

이 대답은 나를 위해 전혀 작동하지 않습니다. – Sinux

+0

@Patrice, CSS가 악의적 인 사용자로부터 사용자를 보호하지 않기 때문입니다. 폼 유효성 검사, 즉'get_max_num()'이됩니다. – dhill

0

귀하의 질문은 특별히 구체적이지는 않지만 템플릿을 어지럽히 지 않고 관리자의 동작을 변경하는 방법이 있습니다.

필자는 인라인에 개체를 추가하기 전에 부모 모델을 먼저 만들어야한다고 생각했습니다. 이는 다음과 같이 수행되었습니다.

class SomethingInline(admin.TabularInline): 
    model = Something 
    extra = 0 
    ... 
    def get_max_num(self, request, obj=None, **kwargs): 
     max = super(SomethingInline, self).get_max_num(request, obj, **kwargs) 
     if obj: 
      return max 
     return 0 

max_num과 비슷한 것을 사용할 수 있습니다. 인라인이 줄 수 인 max_num에 도달하면 "다른 항목 추가"버튼이 비활성화됩니다. 따라서 max_num을 현재 인라인 객체의 수를 +1하도록 동적으로 설정하면 사용자는 저장하기 전에 한 번에 하나씩 만 추가 할 수 있습니다.

이 예에서

, 당신은 할 수 있습니다

def get_max_num(self, request, obj=None, **kwargs): 
     if obj: 
      max = obj.something_set.count() + 1 
     else: 
      max = 1 
     return max 
+0

나는 문제가 있습니다 .with : max_num을 동적으로 제한합니다. 동적으로 max_num을 +1로 설정하면 무엇을 의미합니까? – Patrice

+0

죄송합니다. 충분히 설명하지 못했을 수 있습니다. 내가 편집 할게. –

+0

나는이 기능에 또 다른 문제가있다. def get_max_num이 실행되지 않습니다 .. – Patrice

0

InlineModelAdmin.extra, InlineModelAdmin.max_num, InlineModelAdmin.min_numInlineModelAdmin.get_max_num()을. https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.max_num은 원하는 동작을 수행하기에 충분해야합니다.

max_num을 0으로 설정하십시오. 새 개체를 추가하지 못하게합니다.

class ItemInline(admin.TabularInline): 
    model = Item 
    max_num = 0 

여분을 1로 설정하고 max_num을 3으로 설정하면 하나의 새로운 행이 생깁니다. 3 개의 항목이 추가되면 사라지는 추가 버튼.

class ItemInline(admin.TabularInline): 
    model = Item 
    extra = 1 
    max_num = 3 

원하는 동작을 위해 주위를 둘러보십시오.

class Essai_TemperatureInline(admin.TabularInline): 

model = Essai_Temperature 
extra= 2 

class Media: 
    css = { "all" : ("/static/css/java.css",) } 

및 CSS 파일 :

.inline-related tr.add-row a { display: none; } 

왜이 모든 복잡한 답변

+0

그게 작동하지 않습니다. extra = 1이면 새 줄이 있습니다. 추가 = 1 및 max_num = 3 또는 max_num = 2 .... 나는 새로운 라인이없고 "다른 것을 추가하십시오"가 숨겨져 있습니다 – Patrice

+0

아마도 문제는 django 1.4.8 ..... – Patrice

+0

와 같습니다. 그것은 정확히 어떻게 당신의 상황에서 바로 얻는 것이 중요하지 않습니다. 이 답은 문제를 어떻게 해결할 수 있는지 보여줍니다. 더 나은 질문을하고 더 나은 답변을 받으십시오. 정확히 의도 한 행동은 무엇입니까? – allcaps