Изменение таблиц базы данных в Django

Здесь вы получите список различных способов применения события click. Вы можете выбрать соответственно подходящий или если вы нажмете не работает, попробуйте альтернативу из них.

$('.clickHere').click(function(){ 
     // this is flat click. this event will be attatched 
     //to element if element is available in 
     //dom at the time when JS loaded. 

  // do your stuff
});

$('.clickHere').on('click', function(){ 
    // same as first one

    // do your stuff
})

$(document).on('click', '.clickHere', function(){
          // this is diffrent type 
          //  of click. The click will be registered on document when JS 
          //  loaded and will delegate to the '.clickHere ' element. This is 
          //  called event delegation 
   // do your stuff
});

$('body').on('click', '.clickHere', function(){
   // This is same as 3rd 
   // point. Here we used body instead of document/

   // do your stuff
});

$('.clickHere').off().on('click', function(){ // 
    // deregister event listener if any and register the event again. This 
    // prevents the duplicate event resistration on same element. 
    // do your stuff
})
59
задан dfarrell07 12 July 2013 в 21:52
поделиться

6 ответов

Как отмечено в других ответах на ту же тему, убедиться смотреть панель DjangoCon 2008 Эволюции Схемы на YouTube.

кроме того, два новых проекта на карте: Simplemigrations и Миграционный .

16
ответ дан akaihola 24 November 2019 в 18:27
поделиться

Вручную выполнение изменений SQL и дампа/перезагрузки является оба опциями, но можно также хотеть проверить некоторые пакеты эволюции схемы для Django. Самые зрелые опции django-эволюция и Юг .

РЕДАКТИРОВАНИЕ : И эй, здесь прибывает dmigrations.

ОБНОВЛЕНИЕ : Так как этот ответ был первоначально записан, django-эволюция и , dmigrations и прекратил активную разработку и , Юг стал фактическим стандартом для миграции схемы в Django. Части Юга могут даже быть интегрированы в Django в рамках следующего выпуска или два.

ОБНОВЛЕНИЕ : платформа миграций схемы на основе Юга (и созданный Andrew Godwin, автором Юга) включена в Django 1.7 +.

59
ответ дан Carl Meyer 24 November 2019 в 18:27
поделиться

Один хороший способ сделать это через приспособления, особенно эти initial_data приспособления.

приспособление А является набором файлов, которые содержат сериализированное содержание базы данных. Таким образом, это похоже на наличие резервного копирования базы данных, но поскольку это - что-то, о чем Django знает, это легче использовать и будет обладать дополнительными преимуществами, когда Вы приезжаете, чтобы сделать вещи как поблочное тестирование.

можно создать приспособление из данных в настоящее время в DB с помощью django-admin.py dumpdata. По умолчанию данные находятся в формате JSON, но другие опции, такие как XML доступны. Хорошее место к оборудованию магазина fixtures подкаталог Ваших каталогов приложения.

можно загрузить fixure использование django-admin.py loaddata, но более значительно, если приспособление имеет имя как initial_data.json, это будет автоматически загружено, когда Вы сделаете syncdb, избавляя от необходимости импортировать его сами.

Другое преимущество - то, что, когда Вы работаете manage.py test для выполнения Модульных тестов, временной тестовой базе данных также загрузят Приспособление Исходных данных.

, Конечно, это будет работать когда, когда Вы добавите атрибуты к моделям и столбцам к DB. При отбрасывании столбца от Базы данных, необходимо будет обновить приспособление для удаления данных для того столбца, который не мог бы быть простым.

Это работает лучше всего при выполнении большого количества небольших изменений базы данных во время разработки. Для обновления производственного DBS вручную сгенерированный сценарий SQL может часто работать лучше всего.

9
ответ дан Dave Webb 24 November 2019 в 18:27
поделиться

Я использовал django-эволюцию. Протесты включают:

  • Его автоматические предложения были однородно гнилыми; и
  • Его функция цифрового отпечатка возвращает различные значения для той же базы данных по различным платформам.

Однако я нахожу, что пользовательские schema_evolution.py приближаются удобный. Для работы вокруг проблемы цифрового отпечатка я предлагаю код как:

BEFORE = 'fv1:-436177719' # first fingerprint
BEFORE64 = 'fv1:-108578349625146375' # same, but on 64-bit Linux
AFTER = 'fv1:-2132605944' 
AFTER64 = 'fv1:-3559032165562222486'

fingerprints = [
    BEFORE, AFTER,
    BEFORE64, AFTER64,
    ]

CHANGESQL = """
    /* put your SQL code to make the changes here */
    """

evolutions = [
    ((BEFORE, AFTER), CHANGESQL),
    ((BEFORE64, AFTER64), CHANGESQL)
    ]

, Если бы у меня было больше цифровых отпечатков и изменений, я осуществил бы рефакторинг его. До тех пор создание его инструмент для очистки украло бы время разработки из чего-то еще.

РЕДАКТИРОВАНИЕ: , Учитывая, что я вручную создаю свои изменения так или иначе, я попробую dmigrations в следующий раз.

4
ответ дан Garth Kidd 24 November 2019 в 18:27
поделиться

django-command-extensions является django библиотекой, которая дает некоторые дополнительные команды manage.py. Один из них является sqldiff, который должен дать Вам, sql должен был обновить к Вашей новой модели. Это, однако, перечислено как 'очень экспериментальное'.

3
ответ дан defrex 24 November 2019 в 18:27
поделиться

До сих пор в моей компании мы использовали ручной подход. Какие работы лучше всего для Вас зависит очень от Вашего стиля разработки.

у Нас обычно нет такого количества изменений схемы в производственных системах и несколько формализованных развертываниях с разработки на рабочие серверы. Каждый раз, когда мы развертываем (10-20 раз в год), мы делаем разность заливки тока и предстоящего производственного ответвления, рассматривая весь код и отмечая то, что должно быть изменено на рабочем сервере. Необходимые изменения могли бы быть дополнительными зависимостями, изменениями в файле настроек и изменениями в базе данных.

Это работает очень хорошо на нас. Автоматизация всего этого является нишевым видением, но к трудному для нас - возможно, мы могли справиться с миграциями, но мы все еще должны будем обработать дополнительную библиотеку, сервер, безотносительно зависимостей.

2
ответ дан max 24 November 2019 в 18:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: