GMashtalyar

Models

.

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!

Methods

.

# 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()

Classes

.

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'),

Cache

.

in settings:
CACHES = {}


cats = cache.get ('cats')
if not cats:
	cats = Category.objects.annotate (Count ('women'))
	cache.set ('cats', cats, 60)

Jinja

.

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>