我正在制作一个管理操作,尝试获取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
。
答案 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)