Django_filters проверяют, существует ли значение/соединение

Hej!

Я ищу вариант, как фильтровать, ЕСЛИ значение существует, само значение не имеет значения. Чтобы отфильтровать все учреждения с данным AddOn.

Лучше всего было бы установить флажок, где я могу "проверить", хочу ли я, чтобы записи моей базы данных фильтровались по этой переменной или нет. Если флажок установлен, я хочу отфильтровать все записи, которые имеют данную переменную, а если флажок не установлен, я не хочу фильтровать.

models.py

class Institution(models.Model):
    name = models.CharField(
        verbose_name=_("Name of the institution"),
        max_length=200,
    )
    abbreviation = models.CharField(  # null=False, but "" allowed. Is Django convention
        verbose_name=_("Acronym"),
        max_length=25,
        blank=True,
        help_text=_("if applicable"),
    )

class AddInstitutionMorebio(models.Model):
    institution = models.OneToOneField(
        Institution,
        on_delete=models.PROTECT,
        related_name="institution_morebio"
    )
    id_morebio = models.CharField(
        max_length=6,
        unique = True
    )
filters.py

class InstitutionFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(method='name_filter', label="Name")

   morebio_id = AddInstitutionMorebio.objects.filter(id_morebio=True)  # this does nothing

Кто-нибудь знает, что делать? Любая помощь будет принята с благодарностью! :)

Если я вас понял, вы можете использовать exclude с exact или iexact.

Вместо:

.filter(id_morebio=True)

Попытка:

.exclude(id_morebio__exact="")

Обратите внимание, что перед __ стоит двойное подчеркивание exact. Это в основном исключит все записи, которые имеют именно "" как id_morebio значение.

morebio_id = BooleanFilter(lookup_expr='isnull', field_name='institution_morebio__id_morebio', label='MoreBio')

это решение, которое я нашел. Просто если кто-то еще борется с тем же самым.

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