Получение данных при наличии выбора в Django models.TextChoices

Версии программ:
Django 3.1.13
Python 3.8.10

Мой models.py:

# Create your models here.

class Odorant(models.Model):
    Pubchem_ID = models.IntegerField(primary_key = True)
    Name = models.CharField(max_length =50)
    Ruletype = models.TextChoices ('Ruletype', 'Satisfied Unsatisfied')
    Rule_of_Five = models.CharField(max_length = 20, choices = Ruletype.choices)
    Rule_of_Three = models.CharField(max_length = 20, choices = Ruletype.choices)
    Ghose_Filter = models.CharField(max_length = 20, choices = Ruletype.choices)

Я хотел бы получить все запахи, которые удовлетворяют одному из правил, а также те, которые удовлетворяют всем правилам одновременно, и показать их на html-странице. Я уже настроил urls.py и views.py, но мне не хватает правильной функции для запроса к базе данных.
. Если нужно больше кода, не стесняйтесь спрашивать.
Есть предложения? Спасибо всем.

На этот вопрос есть ответ в документации Django queryset. Одним из способов достижения этой цели является цепочка функций исключения.

Не имеет смысла also сохранять условия, удовлетворяющие всем вашим правилам, в одном наборе запросов, поэтому сохраняйте их отдельно. Если у вас есть вопросы о фильтрации пустых значений, очень хороший ответ можно найти в этом посте .

satisfy_one_or_more_rules = Odorant.objects\
    .exclude(Rule_of_Five='')\
    .exclude(Rule_of_Three='')\
    .distinct()

satisfy_all_rules = Odorant.objects\
    .exclude(Rule_of_Five='', Rule_of_Three='')
Вернуться на верх