Использование менеджера моделей на queryset

В моей панели администратора я хочу выполнять некоторые функции из моего ModelManager. У меня есть

admin.py

def change_status(modeladmin,request,queryset):
    status = queryset.change_value()
    return status

model.py

class ItemManager(models.Manager):
   @classmethod
   def change_value(cls):
       list = Item.objects.filter(value=5)
       list.update(value=6)
       return list.list_values("id", flat=True)
   

class Item(models.Model):
    name = models.TextField()
    value = models.FloatField()

    objects = ItemManager()

Но я получаю объект QuerySet без атрибута 'change_value'. Но queryset является Item Queryset, так почему я не могу использовать методы менеджера на нем?

Вам следует изменить модуль model.py так, как показано ниже:

class Item(models.Model):
    name = models.TextField()
    value = models.FloatField()

    objects = ItemManager()
    class Admin:
        manager = ItemManager()

Как мы ожидаем, просто objects будет manager, но админ будет использовать manager в self.Admin.manager.

Reference: Admin model manager [djangoproject-code]

Вернуться на верх