2016-11-13 163 views
1

我正在嘗試更新admin.py操作中的擴展用戶模型profile。我一直在研究這個問題幾個小時,現在已經不多了。我收到一個pc_add_1() missing 1 required positional argument: 'queryset'錯誤,請幫忙。缺少1個必需的位置參數:'queryset'

class ProfileAdminInLine(admin.StackedInline): 
    model = Profile 


class ProfileAdmin(UserAdmin): 
    list_display = ['username', 'email', 'first_name', 'last_name', 'is_staff', 
        'rewards_punch_card', 'rewards_tier', 'credits'] 
    list_select_related = True 
    inlines = [ProfileAdminInLine] 

    actions = ['pc_add_1', 'pc_add_2', 'pc_add_3', 'pc_add_4', 'pc_add_5', 
       'pc_add_6', 'pc_add_7', 'pc_add_8', 'pc_add_9'] 

    def rewards_tier(self, user): 
     return user.profile.rewards_tier 

    def rewards_punch_card(self, user): 
     return user.profile.rewards_current 

    def pc_add_1(self, request, user, queryset): 

     punch_card = user.profile.rewards_current 
     tier = user.profile.rewards_tier 
     credits = user.profile.rewards_credits 

     punch_cards_updated = queryset.update(punch_card + 1) 

     if punch_cards_updated == 10: 
      queryset.update(punch_card == 0) 
      if tier == 1: 
       queryset.update(tier + 1) 
       queryset.update(credits + 25) 
      elif tier == 2: 
       queryset.update(tier + 1) 
       queryset.update(credits + 35) 
      elif tier == 3: 
       queryset.update(tier + 1) 
       queryset.update(credits + 45) 
      elif tier == 4: 
       queryset.update(tier + 1) 
       queryset.update(credits + 55) 
      elif tier == 5: 
       queryset.update(credits + 65) 
      elif tier == 6: 
       queryset.update(credits + 65) 

     else: 
      pass 

回溯

Internal Server Error: /admin/auth/user/ 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner 
    response = get_response(request) 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/contrib/admin/options.py", line 544, in wrapper 
    return self.admin_site.admin_view(view)(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/decorators.py", line 149, in _wrapped_view 
    response = view_func(request, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func 
    response = view_func(request, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/contrib/admin/sites.py", line 211, in inner 
    return view(request, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/decorators.py", line 67, in _wrapper 
    return bound_func(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/decorators.py", line 149, in _wrapped_view 
    response = view_func(request, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/utils/decorators.py", line 63, in bound_func 
    return func.__get__(self, type(self))(*args2, **kwargs2) 
    File "/usr/local/lib/python3.5/site-packages/django/contrib/admin/options.py", line 1569, in changelist_view 
    response = self.response_action(request, queryset=cl.get_queryset(request)) 
    File "/usr/local/lib/python3.5/site-packages/django/contrib/admin/options.py", line 1305, in response_action 
    response = func(self, request, queryset) 
TypeError: pc_add_1() missing 1 required positional argument: 'queryset' 
[13/Nov/2016 15:16:52] "POST /admin/auth/user/ HTTP/1.1" 500 106710 
+0

請將完整的錯誤追溯添加到您的問題! –

+0

已更新,對不起! – Kerosive

回答

1

你有方法簽名錯誤:

def pc_add_1(self, request, user, queryset): 

有關管理措施應該是

def pc_add_1(self, request, queryset): 
現在,如果你想知道哪些管理

用戶正在做出改變您可以同時發現了從request.user

1

你必須從線

def pc_add_1(self, request, user, queryset): 

的Django刪除參數user會調用該方法只requestqueryset。您將可以通過request.user獲取用戶。

相關問題