2012-11-01 2 views
2

이상한 문제가 있습니다. admin.py에서 나는 다음과 같이 말할 수 있습니다 :django admin이 동적 모델을 동작으로 등록 중

admin.site.register(MyModel) 

이것은 분명히 괜찮습니다.

def user_action_from_admin_panel(......): 
    ..... 
    admin.site.register(MyModel) 

MyModel 클래스는 링크없이 일반 텍스트로 관리자에 표시 가져옵니다 지금은이 모델은 사용자 작업의 결과로 자동으로로드하려고합니다. 이 문제를 해결할만한 아이디어가 있습니까?

+0

시도 작업이 완료된 후 서버가 작동하는지 확인하십시오. 문제가 지속되면 알려주십시오. –

+0

thx Raunak 그러나 행운이 없음 – Zdanozdan

+0

실제 문제를 해결하는 것보다 수행하려는 작업을 수행하는 다른 방법을 제시하는 것이 더 쉽습니다. 왜 이것을하고 싶은지 설명해 주시겠습니까? –

답변

2

은 내가/변경 사항을 추가하지 권한을한다면 내가 흑인 링크가이

from django.core.urlresolvers import clear_url_caches 
from django.utils.importlib import import_module 


def user_action_from_admin_panel(......): 
    ..... 
    admin.site.register(MyModel) 
    reload(import_module(settings.ROOT_URLCONF)) 
    clear_url_caches() 
0

을 필요로 할 수 있음. 장고 관리자 섹션이 모델있는 모든 URL 일치를 찾을 수 있기 때문에

class MyModelAdmin(admin.ModelAdmin): 

    def has_add_permission(self, request): 
     return True 

    def has_change_permission(self, request): 
     return True 
... 

admin.site.register(MyModel, MyModelAdmin) 
0

이유는 아마도 다음과 같습니다

시도하여 관리 클래스를 다시 정의합니다. 따라서 관리 영역의 해당 모델 행은 비활성화되고 추가 또는 편집 링크가 설정되지 않습니다.

경우에 따라 모델 등록 코드가 관리 URL (django.contrib.admin.site.AdminSite.get_urls())을 생성 한 후에 트리거됩니다. 해결 방법은 전체 URL의 전체 관리자 URL 패턴을 업데이트하거나 django-quickadmin이라는 장고 앱을 사용하는 것입니다. 추가 코드를 작성하지 않고 모든 사용자 정의 모델을 관리자에게 자동으로로드합니다. 동적으로 생성

2

모델은 app_labels가 INSTALLED_APPS

이 디자인으로 다시 것입니다에 나열된 패키지와 일치하지 않는 관리자에 표시되지 않으며, 버그로 간주되어서는 안된다.

새로운 모델 링크

를 얻을 수 있도록

model = create_model('DynamicModel', app_label='existing_app') 

은 또한 당신의 URL의 conf를 다시로드 모델을 만드는 동안 app_label를 추가해야합니다

# after creating model 
from django.utils.importlib import import_module 
reload(import_module(settings.ROOT_URLCONF)) 

출처 : 다시 시작하는 https://code.djangoproject.com/wiki/DynamicModels#Admininterface