2017-11-13 3 views
-2

이 오류가 원격 서버에서 발생하는 이유는 무엇입니까?하지만 로컬 컴퓨터에서 제대로 작동했는지 확인하십시오. 아래 오류 샘플을 찾아보십시오.__init __()에서 예상치 못한 키워드 인수 'lookup_type'이 발생했습니다

Request Method:  GET 
Request URL: https:***********.***?job_function=dir&job_type=parttime&max_experience=100&min_experience=3&name=test&owner_id=571&page_size=10 
Django Version:  1.8.14 
Exception Type:  TypeError 
Exception Value:  

__init__() got an unexpected keyword argument 'lookup_type' 

Exception Location:  env/local/lib/python3.4/dist-packages/django/forms/fields.py in __init__, line 245 
Python Executable: env/bin/python3.4 
Python Version:  3.4.3 
Python Path:  

'/home/deployment/backend', 
'/home/deployment/backend/env/bin', 
'/home/deployment/backend', 
'', 
'/home/deployment/backend/env/local/lib64/python3.4/site-packages', 
'/home/deployment/backend/env/local/lib/python3.4/site-packages', 
'/home/deployment/backend/env/lib64/python3.4', 
'/home/deployment/backend/env/lib/python3.4', 
'/home/deployment/backend/env/lib64/python3.4/site-packages', 
'/home/deployment/backend/env/lib/python3.4/site-packages', 
'/home/deployment/backend/env/lib64/python3.4/plat-linux', 
'/home/deployment/backend/env/lib64/python3.4/lib-dynload', 
'/home/deployment/backend/env/local/lib/python3.4/dist-packages', 
'/usr/lib64/python3.4', 
'/usr/lib/python3.4' 

코드 :

여기에 주어진 코드를 찾아주세요, 그것은 로컬 컴퓨터 미세하지만 원격 서버에서 작업 get_annotate_queryset

데프 Jobviewsets 클래스에 정의 된 두 개의 기능 (여기 착오를 통해입니다 자기, 쿼리 세트) :

#queryset = queryset.filter(Q(job_for='all') | Q(job_for='')) 
queryset = queryset.annotate(
    all_applicant_count=Count('applicants', distinct=True), 
    job_view_count=Count('job_views', distinct=True), 
).extra(select={ 
    'voteup_count': get_voteup_count_query(queryset.model), 
    'has_applied': 
     """ 
     SELECT Sum(CASE WHEN {job_applicant}.user_id = {user_id} THEN 1 ELSE 0 END) 
     FROM {job_applicant} 
     WHERE job_id={job}.id 
     """.format(user_id=self.request.user.id, 
      job=Job._meta.db_table, 
      job_applicant=Applicant._meta.db_table), 
    'is_favourite': 
     """ 
     SELECT Sum(CASE WHEN {favourite_job}.user_id = {user_id} THEN 1 ELSE 0 END) 
     FROM {favourite_job} 
     WHERE job_id={job}.id 
     """.format(user_id=self.request.user.id, 
      job=Job._meta.db_table, 
      favourite_job=FavouriteJob._meta.db_table) 
}) 
return queryset 

def get_queryset f) :

queryset = super().get_queryset() 
queryset = self.get_annotate_queryset(queryset) 
if self.action == 'discover': 

    searchtype=self.request.GET.get('search_type') 
    searchKeyword=self.request.GET.get('name') 
    searchLocation=self.request.GET.get('location') 

    job_status=self.request.GET.get('job_status') 
    if(job_status =='' or job_status== None): 
     job_status = 'active' 

    job_type=self.request.GET.get('job_type') 
    if (job_type =='' or job_type == None): 
     job_type = 'fulltime' 

    min_experience=self.request.GET.get('min_experience') 
    if (min_experience =='' or min_experience == None): 
     min_experience = 0 

    max_experience=self.request.GET.get('max_experience') 
    if (max_experience =='' or max_experience == None): 
     max_experience = 100 

    min_salary_compensation=self.request.GET.get('min_salary_compensation') 
    if (min_salary_compensation == None): 
     min_salary_compensation = 0 

    max_salary_compensation=self.request.GET.get('max_salary_compensation') 
    if (max_salary_compensation =='' or max_salary_compensation == None): 
     max_salary_compensation = 500000 

    salary_reccurence=self.request.GET.get('salary_reccurence') 
    if (salary_reccurence =='' or salary_reccurence == None): 
     salary_reccurence = 'hourly' 

    if (searchtype == 'refine_search'): 

     if (searchKeyword == '' or searchKeyword == None): 
      searchKeyword = '' 

     if (searchLocation == '' or searchLocation == None): 
      searchLocation = '' 

     min_experience = int(min_experience) 
     max_experience = int(max_experience) 
     min_salary_compensation = int(min_salary_compensation) 
     max_salary_compensation = int(max_salary_compensation) 

     queryset = queryset.filter(Q(job_title__icontains=searchKeyword) | 
            Q(company_name__icontains=searchKeyword) | 
            Q(location_id=searchLocation) | 
            Q(status=job_status) | 
            Q(employment_type__icontains=job_type) | 
            Q(min_experience__gte=min_experience) & 
            Q(max_experience__lte=max_experience) | 

            Q(compensation__gte=min_salary_compensation) & 
            Q(compensation__lte=max_salary_compensation) | 
            Q(salary_reccurence__icontains=salary_reccurence) 

            ).exclude(owner=self.request.user) 

    if (searchtype != 'refine_search'): 

     if (searchKeyword != None and searchLocation != None): 

      queryset = queryset.filter(Q(job_title__icontains=searchKeyword) | 
             Q(company_name__icontains=searchKeyword) | 
             Q(location_id=searchLocation)).exclude(owner=self.request.user) 

     elif (searchKeyword != None and searchLocation == None): 
      queryset = queryset.filter(Q(job_title__icontains=searchKeyword) | 
             Q(company_name__icontains=searchKeyword)).exclude(
       owner=self.request.user) 

     elif (searchKeyword == None and searchLocation != None): 
      queryset = queryset.filter(Q(location_id=searchLocation)).exclude(owner=self.request.user) 

     else: 
      queryset = queryset.exclude(owner=self.request.user) 

return queryset 
+0

무슨 일이 일어나는지 알 수있는 정보가 충분하지 않습니다. – Linovia

+0

코드가 업데이트되었습니다. 문제가 (searchtype == 'refine_search') 인 경우 : 상태 및 로컬 컴퓨터에서 제대로 작동하지만 원격 서버에서는 작동하지 않습니다. – Ashok

답변

0

정확히 무엇이 잘못 될지 알아보기 위해 인스턴스화되는 클래스의 생성자 메소드를 확인해야합니다.

그러나 오류 메시지에서 인식되지 않는 생성자에 전달되는 추가 인수가있는 것처럼 보입니다. 클래스의 생성자에 정의 된 형식 매개 변수를 살펴보고 전달되는 인수와 비교하십시오.

+0

업데이트 된 코드는 한 번만 검토하십시오. 오류 들어오는 경우 (searchtype == 'refine_search') : 블록 및 로컬 서버에서만 원격 서버에서만 작동합니다. – Ashok

관련 문제