Django's queryset-refactor branch merged into trunk
Так что теперь возможно:
- создавать абстрактные классы моделей:
from django.db import models class AbstractPerson(models.Model): sex = models.ChoiceField(max_length=1, choices=SEX_CHOICES, blank=True, null=True) first_name = models.CharField(max_length=64) last_name = models.CharField(max_length=64, blank=True) birth_date = models.DateField(blank=True) class Meta: abstract = True class Friend(AbstractPerson): important = models.TextField(help_text='Do not forget this things') meet_date = models.DateField(blank=True) class CoWorker(AbstractPerson): password = models.CharField(help_text='I know his password')
- сортировать модели по внешнему полю:
Page.objects.order_by('category__name', 'mtime') Order.objects.order_by('product__name', 'total_price')
- получить нужную "колонку" из queryset'а как список:
ids = Page.objects.values_list('id', flat=True)
- выбрать не все внешние поля, при помощи select_related(), а только необходимые:
pages = Page.objects.select_related('category')
- существенные улучшения в extra():
pages = Page.objects.extra( select=SortedDict(('type', '%s'), ('random', '%d')), select_params=('page', randint(0, 100)) )
pages = Page.objects.extra(select={'is_recent': "mtime > '2008-01-01'"}) pages = pages.extra(order_by='is_recent')
- одновременно обновлять множество объектов:
Pages.objects.filter(template_name='pages/page.html').update(template_name='pages/new_page.html')
Так что $ svn up django
и вперед, эксперементировать и улучшать свой программный код :)
0 комментариев:
Отправить комментарий