.
class Meta:
ordering = ['rank']
Views
if DATABASE_ACCESS == True:
if StockData.objects.filter(symbol=ticker).exists():
entry = StockData.objects.filter(symbol=ticker)[0]
return HttpRsponse(entry.data, content_type=‘application/json’)
ELSE DO SMTH ELSE!
.
# Raw SQL
some_model.objects.raw('SELECT * FROM women_women')
# нужно прописывать select id, ленивые запросы
# Класс Q позволяет делать условия
SomeModel.objects.filter(Q(pk__lt=5) | Q(cat_id=2))
# Класс F позволяет прописывать значения другого поля
SomeModel.objects.filter(pk__gt=F('cat_id'))
# Методы
SomeModel.objects.latest('time_update')
SomeModel.objects.order_by('title').earliest('time_update')
# выбираем определенные поля
SomeModel.objects.values('title', 'cat_id').get(pk=1)
w.get_previous_by_time_update()
w.get_next_by_time_update()
.
LIST VIEW
View
class SomeClassName(ListView):
model = some_model
template_name = ‘package/page_name.html'
# данные передаются как object_list. Можно переписать как:
context_object_name = 'posts'
# передача статичных доп.данных
extra_context = {'title': 'Главная страница'}
# передача динамичных доп.данных
get_context_data()
# пример
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Главная страница'
return context
# фильтрация данных
def get_queryset(self):
return SomeModel.objects.filter(is_published=True)
url
path('', SomeClassName.as_view(), name=‘some_name),
DETAILVIEW
class ShowPost(DetailView):
model = Women
template_name = 'women/post.html'
context_object_name = 'post'
url
path('post/<slug:post_slug>/', ShowPost.as_view(), name='post'),
.
in settings:
CACHES = {}
cats = cache.get ('cats')
if not cats:
cats = Category.objects.annotate (Count ('women'))
cache.set ('cats', cats, 60)
.
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#add
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% empty %}
<li>Sorry, no athletes in this list.</li>
{% endfor %}
</ul>