#django #django-models
#django #django-модели
Вопрос:
У меня есть довольно простая модель. Он определяет лиц следующим образом:
class ActiveTAsManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(is_active=True)
class Person(AbstractUser):
company_id = models.IntegerField(null=True, blank=True, default=None)
objects = models.Manager()
active_TAs = ActiveTAsManager()
пользовательский менеджер моделей работает хорошо, но я хочу добавить условие, основанное на членстве в группе.
class ActiveTAsManager(models.Manager):
def get_queryset(self):
phds = Group.objects.get(name="phds")
return super().get_queryset().filter(is_active=True)
Это не удается, потому что класс Group не импортируется.
Мой вопрос двоякий:
- как я могу импортировать класс Group?
- Как я могу написать фильтр, чтобы он фильтровал на основе членства в группе?
Ответ №1:
Вам не нужно импортировать Group
модель здесь,
Person.objects.filter(groups__name='phds')
Например:
class ActiveTAsManager(models.Manager):
def phd_users(self):
return super(models.Manager, self)
.get_queryset()
.filter(groups__name='phds')
def get_queryset(self):
return super().get_queryset().filter(is_active=True)
и это может быть вызвано как,
Person.active_TAs.phd_users()