Объекты фильтра Django models для ManyToManyField
Например, у меня есть модель:
class User(models.Model):
is_active = models.BooleanField(
'Is active user?',
default=True
)
friends = models.ManyToManyField(
'self',
default=None,
blank=True,
)
Как я могу отфильтровать только активных пользователей в ManyToManyField? (Это не будет работать, просто мои идеи, для ManyToManyField нужна модель в to=)
>queryset = User.objects.filter(is_active=True)
friends = models.ManyToManyField(
queryset,
default=None,
blank=True,
)
Вы можете работать с limit_choices_to=… [Django-doc] для ограничения вариантов добавления элемента в ManyToManyField, поэтому здесь вы можете реализовать это как:
class User(models.Model):
is_active = models.BooleanField(
'Is active user?',
default=True
)
friends = models.ManyToManyField(
'self',
limit_choices_to={'is_active': True}
)
Это отфильтрует набор доступных User в ModelForm, который вы построите для этой модели, и в ModelAdmin для этой модели.