سؤال

ما هي الطريقة الصحيحة لإنشاء أنواع pgsql مخصص لتطبيق جانغو بحيث يتم إنشاء قاعدة بيانات كل الوقت مع syncdb، يتم إنشاء جميع أنواع مخصصة قبل إنشاء أي الجداول (بحيث الجداول يمكن استخدام هذا النوع)؟

وأنا أيضا استخدام جانغو التطور، ولكن هذا ليس حلا مناسبا - يتم تشغيله بعد syncdb. يمكنني تخيل القيام حلا مثل تحديد النماذج مع أنواع الحقول القياسية ثم إنشاء أنواع وتغيير أنواع الأعمدة في التطورات، ولكن هذا بالتأكيد ليس لطيفا ونوع من الغموض ...

وأي فكرة؟

هل كانت مفيدة؟

المحلول

وأنا لا أعتقد أن هناك طريقة للقيام بذلك في جانغو. كما تعلمون، هناك إشارة post_syncdb لكن لا إشارة لpre_syncdb.

وهكذا أعتقد أن هناك خيارين فقط: القرصنة إشارة إلى pre_syncdb جانغو أو استخدام أداة أتمتة مثل نسيج .

والقرصنة إشارة pre_syncdb الخاصة بك، حتى لو كان هو الطريق الصحيح للقيام بذلك، ربما لن تكون بسيطة وكان لديك للحفاظ على التصحيح كل إصدار جديد جانغو.

من ناحية أخرى، ليست فقط أداة أتمتة مثل نسيج بسيط ولكنه يوفر فوائد أخرى إلى المشروع.

وكمثال على ذلك، جزء من بلدي Fabfile يبدو مثل:

def createdb():
    "Create a clean database"
    run('createdb --encoding=UNICODE $(db_name) -O $(db_owner) -U $(db_owner)')
    run('python manage.py syncdb --noinput')

واضافة شيء من هذا القبيل فقط قبل syncdb:

run('psql -U $(db_owner) $(db_name) < app/sql/custom_types.sql')

ويجب أن تكون على ما يرام فقط عن طريق كتابة:

$ fab createdb

وأو:

$ fab cluster createdb

لتشغيل الأوامر على جميع الآلات المدرجة في البيئة الخاصة بك يسمى cluster.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top