2

나는이 (가)와 "저장하고 편집을 계속"다음 코드를 구현하여 버튼을 "다른 저장하고 추가"를 제거 할 수 있었다 : 이것은 위대한 작품을장고 관리 모델 add_view : "저장하고 다른 추가"버튼을 제거하는 방법?

# At the start of my admin.py file I have: 
from django.contrib.admin.templatetags.admin_modify import * 
from django.contrib.admin.templatetags.admin_modify import submit_row as original_submit_row 

@register.inclusion_tag('admin/submit_line.html', takes_context=True) 
def submit_row(context): 
    ctx = original_submit_row(context) 
    ctx.update({ 
     'show_save_and_add_another': context.get('show_save_and_add_another', ctx['show_save_and_add_another']), 
     'show_save_and_continue': context.get('show_save_and_continue', ctx['show_save_and_continue']) 
     }) 
    return ctx 

class MyModelAdmin(GuardedModelAdmin): 
# Then inside MyModelAdmin I have this: 
    def change_view(self, request, object_id, form_url='', extra_context=None): 
     extra_context = extra_context or {} 
     extra_context['show_save_and_add_another'] = False 
     extra_context['show_save_and_continue'] = False 
     return super(MyModelAdmin, self).change_view(request, object_id, 
      form_url, extra_context=extra_context) 

내 change_view을 사용하고 때,하지만 난 '때 단추의 새 인스턴스를 추가하면 단추가 다시 나타납니다.

def add_view(self, request, form_url='', extra_context=None): 
     extra_context = extra_context or {} 
     extra_context['show_save_and_add_another'] = False 
     extra_context['show_save_and_continue'] = False 
     return super(MyModelAdmin, self).add_view(self, request, form_url='', extra_context=extra_context) 

그러나 그것은 나에게 기괴한 MissingAtrribute 오류를 제공합니다 - 여기에 역 추적이다 : 나는 다음을 시도 내가 장고 - 보호자를 사용하여 궁금하네요

Traceback: 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/core/handlers/base.py" in get_response 
    114.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/contrib/admin/options.py" in wrapper 
    432.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapped_view 
    99.      response = view_func(request, *args, **kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    52.   response = view_func(request, *args, **kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/contrib/admin/sites.py" in inner 
    198.    return view(request, *args, **kwargs) 
File "/home/username/Development/MyProject/webapp/MyModel/admin.py" in add_view 
    153.   return super(MyModelAdmin, self).add_view(self, request, form_url='', extra_context=extra_context) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapper 
    29.    return bound_func(*args, **kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/utils/decorators.py" in _wrapped_view 
    95.      result = middleware.process_view(request, view_func, args, kwargs) 
File "/home/username/.virtualenvs/MyProject/lib/python3.3/site-packages/django/middleware/csrf.py" in process_view 
    111.     request.COOKIES[settings.CSRF_COOKIE_NAME]) 

Exception Type: AttributeError at /admin/MyModel/ModelInstance/add/ 
Exception Value: 'MyModelAdmin' object has no attribute 'COOKIES' 

이 어떻게 든 내 문제를 일으키는 지? 누구든지 새 모델 인스턴스를 추가 할 때 템플릿의 submit_line 부분에서 이러한 귀찮은 단추를 제거하는 방법을 알고 있습니까?

답변

3

이러한 버튼을 미용 목적으로 명확하게 숨기려면 CSS를 사용할 수도 있지만 CSS를 검사하여 다시 활성화 할 수 있기 때문에 최선의 방법이 아닐 수 있습니다. 특정 모델 관리자에게 제공됩니다.

admin.py :

class MyModelAdmin(admin.ModelAdmin) 

    .... 

    class Media: 
     #js = ('') # Can include js if needed 
     css = {'all': ('my_admin/css/my_model.css',)} 

my_model.css가 위의 경로에서 정적 파일 폴더에 있습니다.

my_model.css :

/* Optionally make the continue and save button look like primary */ 
input[name="_continue"]{ 
    border: 2px solid #5b80b2; 
    background: #7CA0C7; 
    color: white; 
} 

/* Hide the "Delete", "Add Another" and "Save" buttons, customize this to what you need */ 
.deletelink, input[name="_addanother"], input[name="_save"]{ 
    display: none; 
} 

클래스와 이름은 내가 장고 지금 1.6.6과 나는 그들이 최근에 변경된 생각하지 않는다 사용하고,이 버튼에 대한 장고의 버전에 따라 변경 될 수 있습니다. 전체 관리 사이트에서이 기능을 사용하려면 admin/base_site.html 기본 템플릿을 정적 디렉토리에 복사하고 '추가 헤드'블록을 덮어 쓰면이 스타일을 포함 할 수 있습니다. base_site.html을 참조하십시오.

CSS 접근 방식이 도움이되기를 바랍니다. :) 오류가 발생하지 않을 것입니다.

+0

좋은 해결 방법 - 아무도 오류의 원인을 추적 할 수없는 경우 며칠 이내에이를 수락합니다. –