Комбинированный забор с кованой решеткой является украшением участка и особой гордостью хозяина дома. Установленный со стороны фасада дома он привлекает внимание и заставляет остановиться, задержать взгляд на металлических кружевах, которыми украшены кованые решетки. Плавные овалы придают кованой ограде воздушность и легкость. Верхушки вертикальных прутьев завершаются острыми наконечниками, стилизованными под копья.
Под стать такому забору с кованой решеткой и дом, который выглядит солидно и имеет презентабельный внешний вид. Конечно, такая кованая ограда стоит недешево, но, если каменные работы выполнить своими руками, то стоимость забора может существенно уменьшиться. Именно этот этап строительства забора будет рассмотрен в данной статье.
После чего Вы обнаружили, что: name на самом деле должно быть CharField, а не TextField, а facebook_page__id содержит двойное подчёркивание, а не одинарное, как Вы хотели. Тогда можно исправить эти проблемы и выполнить:
./manage.py schemamigration southtut --auto --update + Added model southtut.Group Migration to be updated, 0026_auto__add_group, is already applied, rolling it back now... previous_migration: 0025_auto__foo (applied: 2012-05-25 21:20:47) Running migrations for southtut: - Migrating backwards to just after 0025_auto__foo. < partner:0026_auto__add_group Updated 0026_auto__add_group.py. You can now apply this migration with: ./manage.py migrate southtut
Что произошло? South удалил последнюю миграцию, которая создала модель, но в которой были ошибки, и заменил её новой миграцией, которая уже не содержит этих ошибок.
Стоит так же обратить внимание на то, что та миграция, которая была уже применена, была автоматически откачена назад. Вы можете теперь применить последнюю версию миграции чтобы получить правильный вариант модели:
./manage.py migrate southtut
Можно повторять этот процесс так часто, как требуется, внося необходимые изменения и в итоге получить лишь одну миграцию, где будут учтены все ваши пожелания.
Просмотр текущих миграций
Часто бывает полезно посмотреть, какие миграции были применены на данный момент и какие доступны для использования. Для этой причины есть команда ./manage.py migrate —list. Вот результат выполнения этой команды для нашего проекта:
Наличие звёздочки (*) говорит о том, что миграция была применена, а отсутствие — что ещё нет. Соответственно, чтобы увидеть только те миграции, которые были применены, воспользуйтесь командой ./manage.py migrate —list | grep -v «*»
Если у Вас есть несколько приложений, работающих при помощи миграций, то можно задать и имя приложения для просмотра миграций только для него.
Перенос данных
До сих пор мы говорили только о «миграции схемы», то есть об изменении колонок и индексов. Но есть и другой тип миграции — «миграция данных».
Миграция данных используется для изменения данных, сохранённых в вашей БД для приведения их в соответствие с новой схемой или предоставления новых возможностей. Например, если Вы сохраняете пароль в виде обычного текста (если это и правда так, то немедленно исправьте это. НЕМЕДЛЕННО!!!) и теперь хотите хранить его в виде солёного хеша, то Вам могут потребоваться эти три шага (причём каждый шаг — это одна миграция):
Создаём две новые колонки: password_salt и password_hash (миграция схемы)
Используя содержимое колонки password вычисляем соль и хеш для каждого пользователя (миграция данных)
Удаляем старую колонку password (миграция схемы)
Как провести первую и последнюю миграцию Вы уже и сами знаете: изменяете models.py и запускаете ./manage.py schemamigration —auto myapp. Главное не удаляйте сразу колонку password, так как нам понадобятся данные из неё для заполнения двух новых колонок (всегда, всегда делайте бакуп вашей БД перед тем, как сделать любое изменение, которое может попортить данные. Потому что однажды именно так и будет).
Давайте возьмём реальный пример. Создадим новое приложение под именем southtut2. Добавим его в INSTALLED_APS и создадим его модель:
from django.db import models
class User(models.Model):
username = models.CharField(max_length=255) password = models.CharField(max_length=60) name = models.TextField()
Старое платье можно сделать модным и стильным, обновив его столь оригинальным способом. Красить платье мы будем не целиком, а частично, и в технике, похожей на узелковый батик. Только никаких узлов вязать мы не будем. Зато абстрактный рисунок станет настоящей изюминкой не только самого платья, но и всего образа. Смотрите сами!
Кухня, видимо, самое притягательное и важное место в квартире. От того, насколько удобно и рационально расставлена в ней мебель, будет зависеть ее функциональность, удобство, уют.
Нередко можно видеть, как балкон или лоджия становятся местом хранения различного хлама. Завершив ремонт в квартире, мы часто откладываем отделку балкона на потом, и это может продолжаться годами. При этом мы жалуемся то на нехватку времени, то на отсутствие средств или незнание технологии выполнения подобных работ.
Остекление и отделка балкона может быть выполнена своими руками. Вы потратитесь только на приобретение строительных и отделочных материалов и на покупку обучающего видеокурса «Красивый балкон своими руками».
Черничное мороженное содержит большое количество черники, а черника содержит антоцианы — противораковые антиоксиданты. Это вкусное лакомство не только доставит истинное удовольствие, но еще и принесет пользу здоровью.
Для приготовления черничного мороженного понадобится полтора стакана свежей черники, стакан обезжиренного йогурта и сока черники, две столовые ложки меда и свежего лимонного сока.
Приготовить очень просто. Нужно поместить в блендер все ингредиенты и взбить до однородной массы. Полученную массу разлить по формам, добавив палочку. Также можно добавить ягоды черники для красоты. Замораживать в течении шести часов.
Такое мороженное содержит убойную дозу витамина С, калий, магний, хром и цинк. При этом черничная лакомка не грозит Вам ожирением. Калорийность одной порции составляет всего 38 ккал, 7 углеводов и практически не содержит жира.