আপনি যদি ডেভলপমেন্ট মোডে থাকেন এবং আপনি কেবল সবকিছু (ডাটাবেস, মাইগ্রেশন ইত্যাদি) পুনরায় সেট করতে চান তবে আমি আবদেলহামিদ বা-এর উত্তরের ভিত্তিতে এই স্ক্রিপ্টটি ব্যবহার করি। এটি ডাটাবেসের টেবিলগুলি মুছে ফেলবে (পোস্টগ্রিস), সমস্ত মাইগ্রেশন ফাইল মুছে ফেলবে, মাইগ্রেশনগুলি পুনরায় চালাবে এবং আমার প্রাথমিক ফিক্সচারগুলি লোড করবে:
#!/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"
রিসেট- db.sql ফাইল:
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 ফাইল:
#!/usr/bin/env bash
cd ../../src
./manage.py makemigrations
./manage.py migrate
load_initial_fixtures.sh ফাইল:
#!/usr/bin/env bash
cd ../../src
./manage.py loaddata ~/path-to-fixture/fixture.json
আপনার অ্যাপ্লিকেশনের সাথে সঙ্গতিপূর্ণ পথগুলি অবশ্যই পরিবর্তন করতে ভুলবেন না। আমার কাছে এই স্ক্রিপ্টগুলি ব্যক্তিগতভাবে প্রজেক্ট_রূট / স্ক্রিপ্ট / লোকাল নামে একটি ফোল্ডারে রয়েছে এবং জ্যাঙ্গোর উত্সগুলি প্রকল্প_রূট / এসসিআর-তে রয়েছে।