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)
当我在管理员后台尝试运行这个操作时,出现了一个错误:
'QuerySet' object has no attribute 'user'
这个错误指向了这一行 queryset.user.update(active=True)
我现在很难弄明白怎么正确地查询到这个关联的 user
,并在管理员操作函数中把它标记为 active
。
2 个回答
0
ZZY的回答是对的,他应该得到认可,但我不知道用户的属性应该是 is_active
而不是 active
。我猜他也不知道这一点,因为从问题本身来看。
完整的答案应该是这样的:
for q in queryset:
q.user.is_active = True
q.user.save()
queryset.update(accepted=True)
1
这个可以用吗?
for q in queryset:
q.user.is_active = True
q.user.save()
queryset.update(accepted=True)