Какова роль использования двух тире здесь __год в примере ниже? я новичок в изучении django

#django #timezone #django-queryset

#django #Часовой пояс #django-queryset

Вопрос:

Получите вопрос, который был опубликован в этом году.

 >>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: What's up?>
 

Ответ №1:

Это __year поиск [Django-doc], который, таким образом, фильтруется по year pub_date . Таким образом, это означает, что вы получите вопрос с pub_date помощью в текущем году (2021).

Поскольку вы используете .get(…) [Django-doc], это означает, что он выдаст ошибку, если таковой Question не существует, или если существует несколько таких Question . Вы должны использовать .filter(…) [Django-doc] для извлечения всех Question опубликованных в текущем году (2021), таким образом, это коллекция, которая может содержать ноль, один или несколько элементов.

Комментарии:

1. да, спасибо, эти два тире, когда мы сможем использовать их также в django?

2. @ChaimaeMsaad: это символы подчеркивания , вы используете их для поиска (например __in , __lt , __month` и т. Д.) И Для просмотра отношения (поэтому фильтруйте по полю связанного объекта модели).