Geliştirme modundaysanız ve sadece her şeyi (veritabanı, geçişler, vb.) Sıfırlamak istiyorsanız, bu betiği Abdelhamid Ba'nın cevabına göre kullanıyorum. Bu, veritabanı tablolarını (Postgres) silecek, tüm geçiş dosyalarını silecek, geçişleri yeniden çalıştıracak ve ilk demirbaşlarımı yükleyecektir:
#!/usr/bin/env bash
echo "This will wipe out the database, delete migration files, make and apply migrations and load the intial fixtures."
while true; do
read -p "Do you wish to continue?" yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
echo ">> Deleting old migrations"
find ../../src -path "*/migrations/*.py" -not -name "__init__.py" -delete
echo ">> Deleting database"
psql -U db_user -d db_name -a -f ./reset-db.sql
echo ">> Running manage.py makemigrations and migrate"
./migrations.sh
echo ">> Loading initial fixtures"
./load_initial_fixtures.sh
echo ">> Done"
reset-db.sql dosyası:
DO $$ DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;
migration.sh dosyası:
#!/usr/bin/env bash
cd ../../src
./manage.py makemigrations
./manage.py migrate
load_initial_fixtures.sh dosyası:
#!/usr/bin/env bash
cd ../../src
./manage.py loaddata ~/path-to-fixture/fixture.json
Yolları uygulamanıza karşılık gelecek şekilde değiştirdiğinizden emin olun. Şahsen bu betikleri project_root / script / local adlı bir klasörde ve django'nun kaynakları project_root / src'de var.