Получение данных при наличии выбора в 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='')