再利用可能なアプリケーションがあります。このアプリでは、一部のモデルをローカライズする必要があり、そのために django-modeltranslation アプリを使用しています。
django-modeltranslation を使用すると、サウス マイグレーションでモデル定義にローカライズされたフィールドが含まれるようになります。
たとえば、次のモデルがあります。
class MyModel(models.Model):
name = models.CharField(...)
そして、次の translation.py ファイル
class MyModelOptions(TranslationOptions):
fields = ('name',)
translator.register(MyModel, MyModelOptions)
私のsettings.pyで定義された2つの言語、frとen
このアプリで South schemamigration を実行すると、south はname_fr
andname_en
フィールドを移行のモデル定義に追加します。
class Migration(SchemaMigration):
def forwards(self, orm):
#Here the columns are created depending but It can be managed for all languages in settings.LANGUAGES
for (lang, _x) in settings.LANGUAGES:
#create the column for the language
def backwards(self, orm):
#Simimar workaround than forwards can be implemented
models = {
'myapp.mymodel': {
'Meta': {'object_name': 'MyModel'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
#The following items are the model definition and can not be generated from settings.LANGUAGES
'name_en': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
'name_fr': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
}
私の知る限り、このモデル定義は、south によってハードコーディングされた方法で生成されます。
結果として、プロジェクトの settings.py で定義されている言語を事前に知る方法がないため、django-modeltranslation を使用して再利用可能なアプリの南への移行を維持することは困難です。
この問題を管理するために何をお勧めしますか?