Специальная, подарочная акция получения доступа к Django4!
Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.
научимся делать более сложные запросы. Это нам даст уверенность, что написать сайт мы можем любой сложности.
-
ex0 = Sites.objects.exclude(date_added__gt=datetime.date(2021, 11, 16)).exclude(name__icontains ='vk') ex0 <QuerySet [<Sites: Ютуб>, <Sites: Школа Бовсуновского>, <Sites: Редакторы кода.>, <Sites: Машинное обучение.>, <Sites: site2>, <Sites: site1>, <Sites: site 3>, <Sites: site>, <Sites: Markdown>]> ex1 = Sites.objects.exclude(date_added__gt=datetime.date(2021, 11, 16)).filter(name__startswith = 's').exclude(name__icontains ='vk') ex1 <QuerySet [<Sites: site2>, <Sites: site1>, <Sites: site 3>, <Sites: site>]> ex2 = Sites.objects.exclude(date_added__gt=datetime.date(2021, 11, 16)).filter(name__startswith = 'Ш') ex2 <QuerySet [<Sites: Школа Бовсуновского>]>
Разберём исходный код, что бы понять как работать с API моделей, ведь там все написано.
#Исходный код. def get_queryset(self): """ Return the list of items for this view. The return value must be an iterable and may be an instance of `QuerySet` in which case `QuerySet` specific behavior will be enabled. """ if self.queryset is not None: queryset = self.queryset if isinstance(queryset, QuerySet): queryset = queryset.all() elif self.model is not None: queryset = self.model._default_manager.all() else: raise ImproperlyConfigured( "%(cls)s is missing a QuerySet. Define " "%(cls)s.model, %(cls)s.queryset, or override " "%(cls)s.get_queryset()." % { 'cls': self.__class__.__name__ } ) ordering = self.get_ordering() if ordering: if isinstance(ordering, str): ordering = (ordering,) queryset = queryset.order_by(*ordering) return queryset
Я подумал, что могут быть нюансы и не все сильны в ООП, давайте в jupyter напишем и переосмыслим метод isinstance().
Исходя из проделанной ранее качественной работы по понимаю исходного кода, мы можем применить get_queryset() профессионально и понять все возможности.
мы уже сделали вывод и исходя из исходного кода набросали план:
Теперь давайте пропишем и проверим.
Опять вернёмся к методу super(), расскажу очень просто и понятно, что бы каждый мог применять с понимаем. очень мощно понимать этот метод. Так как это ваша палочка-выручалочка в разных иногда очень сложных ситуациях, делает выход банально простым.
< 1 2 3 4 5 6 7 8 >