2014-11-03 3 views
0

Я делаю административное действие, которое пытается связать пользователя Request_Invite и пометить его как Active.Django Admin Действие: объект «QuerySet» не имеет атрибута «пользователь»

Вот мой 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 в функции администратора действий.

ответ

1

Это работает?

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

Нет, я получаю: объект «Пользователь» не имеет атрибута «обновления» – ApathyBear

+0

Я неподвижный мой ответ. Вы можете попробовать еще раз – ZZY

+0

Хотя это не вызывает ошибки, это не обязательно работает: https://app.box.com/s/lsyotuafv878lic1mkul – ApathyBear

0

ответ ЗЗЫ был прав, и он должен заслужить кредит, но я не знаю, что атрибут пользователя должен быть is_active вместо active. Я предполагаю, что он не знал ни того, ни другого, основываясь на самом вопросе.

Полный ответ будет выглядеть следующим образом:

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

Потому что 'is_active' - поле моделей. Пользователь (https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User), а «active» - нет. Коды выглядят просто, поэтому я просто набрал интуитивный ответ, который пришел мне на ум, без тестирования. Извините за ошибки – ZZY

Смежные вопросы