Специальная, подарочная акция получения доступа к Django4!
Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.
Я прошу вас запомнить раз и навсегда. что id всегда есть, то есть каждая запись в базе всегда имеет номер.
Давайте увидим это и научимся использовать. Нужно будет при выборке объектов конкретной записи и особенно в функциях, в классах мы с вами встречались при выборке url.
Научимчя работать с отношениями многие к одному.
ForeignKey
-
# Entry.objects.order_by('blog__name', 'headline') fk = Notes.objects.order_by("sites__name", "title") # Note по полю sites = models.ForeignKey('info_notes.Sites',...... # Sites по полю name = models.CharField(max_length=80,.... # Note Что выбрать, выбрать по заголовкам title = models.CharField(max_length=120) fk <QuerySet [<Notes: Article 1>, <Notes: Article 2>, <Notes: Article 3>, <Notes: Article 4>, <Notes: spb>, <Notes: видео уроки>]>
научимся делать более сложные запросы. Это нам даст уверенность, что написать сайт мы можем любой сложности.
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().
< 1 2 3 ... 14 15 16 17 18 ... 59 60 61 >