Django Admin Action:'QuerySet'对象没有属性'user'

时间:2014-11-03 05:08:17

标签: python django django-models django-admin django-queryset

我正在制作一个管理操作,尝试获取Request_Invite的关联用户并将其标记为活动。

这是我的Admin.py:

def activate_user(modeladmin, reqeust, queryset):
    queryset.user.update(active=True)
    queryset.update(accepted=True)
activate_user.short_description = "Mark User as Active"

class Request_InviteAdmin(admin.ModelAdmin):
    list_display = ['user', 'accepted']
    ordering = ['user']
    actions = [activate_user]
    class Meta:
        model = Request_Invite

admin.site.register(Request_Invite, Request_InviteAdmin)

Models.py:

from django.contrib.auth.models import User
class Request_Invite(models.Model):
    user = models.OneToOneField(User)
    accepted = models.BooleanField(default=False)

    def __unicode__(self):
        return u"%s's request" % (self.user)

尝试在admin后端运行操作时,出现错误:

'QuerySet' object has no attribute 'user'

这是指行queryset.user.update(active=True)

我正在努力弄清楚如何正确查询关联的user并在管理操作功能中将其标记为active

2 个答案:

答案 0 :(得分:1)

这有用吗?

for q in queryset:
    q.user.is_active = True
    q.user.save()
queryset.update(accepted=True)

答案 1 :(得分:0)

ZZY的答案是正确的,他应该值得赞扬,但我不知道用户的属性必须是is_active而不是active。我假设他根据问题本身并不知道。

完整的答案如下:

for q in queryset:
    q.user.is_active = True
    q.user.save()
queryset.update(accepted=True)