python - 缺少 1 个必需的位置参数 : 'queryset'

标签 python django model django-admin

我正在尝试更新 admin.py 操作中的扩展用户模型配置文件。我已经研究这个问题几个小时了,但效果还不够。我收到 pc_add_1() Missing 1 requiredpositional argument: '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

最佳答案

您的方法签名错误:

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

对于管理操作,应该是

def pc_add_1(self, request, queryset):

现在,如果您想知道哪个管理员用户正在进行更改,您可以从 request.user 中找到

关于python - 缺少 1 个必需的位置参数 : 'queryset' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40575253/

相关文章:

python - pygame 中的 sys.exit() 问题

python - 如何从Flask应用程序连接到AWS上的远程Elasticsearch集群?

java - ResourcesPlugin - 是否可以更改工作区?

c# - 如何从 C# 类生成 angularjs 模型

php - 如何从 PHP 特定行的 sum(columns) 函数获取值

python - 如何根据特定规则标记一系列值?

python - 使用枚举 Django 的下拉菜单主题

python - 基于自定义函数的Django过滤器

python - Django 模型管理器根据查找值获取查询集

android - 如何在我的 Android 应用程序中使用 django 身份验证(django.contrib.auth)