Django는 admin에서 xadmin으로 전환하여 구덩이를 메운다

6790 단어 pythondjangoxadmin
환경:
1、python 3.7.0
2、django 2.2.1
질문 1: IndexError at/xadmin/dbmodel/user/10019678227105/update/
     list index out of range
해결 방법:
1、수정/xadmin/widgets.py 파일,render () 방법의 반환 값을 수정합니다.78 - 81 행에 주석을 달고 새 반환을 추가합니다.
 def render(self, name, value, attrs=None):
        if DJANGO_11:
            input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).replace(
                '/>
%s' # '
' # '
' # '%s
' % (input_html[0], _(u'Today'), input_html[1], _(u'Now')))
return input_html[0] # 새 반환 추가
else:
return super(AdminSplitDateTime, self).render(name, value, attrs)
질문2: ImportError: cannot import name'javascriptcatalog' from 'django.views.i18n'
해결 방법:
1、settings를 수정합니다.py 파일의 INSTALLEDAPPS 항목, django. 추가conf.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    #    xadmin
    'xadmin',
    'crispy_forms',
    'reversion',
    'django.conf',  #   

    'db_model',
    'rest_framework',
    'api',
]

2. 수정/xadmin/sites.py 파일, 355 - 358 행에 주석을 달고 JavaScriptCatalog 클래스를 가져와 수정 사항을 되돌려줍니다.
def i18n_javascript(self, request):
    """
        Displays the i18n JavaScript that the Django admin requires.

        This takes into account the USE_I18N setting. If it's set to False, the
        generated JavaScript will be leaner and faster.
    """
    # if settings.USE_I18N:
    #     from django.views.i18n import javascript_catalog
    # else:
    #     from django.views.i18n import null_javascript_catalog as javascript_catalog
    from django.views.i18n import JavaScriptCatalog
    return JavaScriptCatalog().get(request=request, **{'packages': 'django.conf+xadmin'})

  
질문 3: AttributeError at/xadmin/dbmodel/user/10019678227105/update/ 
       'XxxxField' object has no attribute 'rel'
해결 방법:
1、오류가 대응하는 곳의rel 필드를remote 로 변경합니다field(예:
# if isinstance(f.rel, models.ManyToOneRel):
if isinstance(f.remote_field, models.ManyToOneRel):

질문 4: ModuleNotFoundError: No module named'django.core.urlresolvers'
해결 방법: 모든 도입django. 수정core.urlresolvers 패키지의 파일은 다음과 같이 수정되었습니다.
#from django.core.urlresolvers import reverse
from django.urls import reverse

참고: NoReverseMatch 클래스를 참조하는 부분도 다음과 같이 수정해야 합니다.
#from django.core.urlresolvers import NoReverseMatch
from django.urls import NoReverseMatch

질문 5: TypeError:init__() missing 1 required positional argument: 'on_delete'
해결 방법: 모델 수정.py에 틀린 곳 다 추가ondelete=CASCADE 및 해당 패키지 가져오기:from django.db.models import CASCADE:
# user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"), blank=True, null=True)
#    on_delete=CASCADE
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"), blank=True, null=True,on_delete=CASCADE)

질문6: TypeError:init__() takes 1 positional argument but 6 were given
해결 방법: 버그 파일\xadmin\views\dashboard를 엽니다.py 제284-285 행은 다음과 같이 수정되었습니다.
 # forms.Field.__init__(self, required, widget, label, initial, help_text,
        #                      *args, **kwargs)
 forms.Field.__init__(self)

 
질문 7: ImportError: cannot import name'login'from'django.contrib.auth.views' 
해결 방법: 오류 보고 위치에서 가져온 패키지를 다음과 같이 수정합니다.
# from django.contrib.auth.views import login
# from django.contrib.auth.views import logout
from django.contrib.auth import login,logout

 
질문 8: ImportError: cannot import name'QUERYTERMS' from 'django.db.models.sql.query' 
해결 방법: 오류 보고 위치에서 가져온 패키지를 다음과 같이 수정합니다.
# from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
from django.db.models.sql.query import LOOKUP_SEP, Query

 
질문 9: ImportError: cannot import name'passwordreset_confirm' from 'django.contrib.auth.views' 
해결 방법: 버그 파일 수정\xadmin\plugins\passwords.py에서 가져온 패키지는 다음과 같이 수정되었습니다.
# from django.contrib.auth.views import password_reset_confirm
from django.contrib.auth.views import PasswordResetConfirmView

그리고 사용된 위치의 78 - 83 줄을 다음과 같이 수정합니다.
def do_view(self, request, uidb36, token, *args, **kwargs):
        context = super(ResetPasswordComfirmView, self).get_context()
        # return password_reset_confirm(request, uidb36, token,
        #            template_name=self.password_reset_confirm_template,
        #            token_generator=self.password_reset_token_generator,
        #            set_password_form=self.password_reset_set_form,
        #            post_reset_redirect=self.get_admin_url('xadmin_password_reset_complete'),
        #            current_app=self.admin_site.name, extra_context=context)
        return PasswordResetConfirmView(request, uidb36, token,
                   template_name=self.password_reset_confirm_template,
                   token_generator=self.password_reset_token_generator,
                   set_password_form=self.password_reset_set_form,
                   post_reset_redirect=self.get_admin_url('xadmin_password_reset_complete'),
                   current_app=self.admin_site.name, extra_context=context)

질문10: AttributeError:'Settings'object has no attribute'MIDDLEWARECLASSES'
해결 방법: admin\plugins\language를 수정합니다.py 24 행은 다음과 같이 수정되었습니다.
# if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE_CLASSES:
if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:

좋은 웹페이지 즐겨찾기