我有一個可重用的應用程序。在這個應用程序中,有些模型需要本地化,我正在使用django-modeltranslation應用程序。如何使用django-modeltranslation正確管理可重用應用的南遷移?
使用django-modeltranslation會導致南遷移在模型定義中包含本地化字段。
例如,我我有以下型號:
class MyModel(models.Model):
name = models.CharField(...)
而下面translation.py文件
class MyModelOptions(TranslationOptions):
fields = ('name',)
translator.register(MyModel, MyModelOptions)
和兩種語言,FR和連接,在我的settings.py
定義如果我在這個應用程序上運行南模式遷移,南會將name_fr
和name_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'}),
}
據我所知,這個模型定義是以硬編碼的方式在南方生成的。
因此,使用django-modeltranslation來維護可重用應用程序的南遷是很困難的,因爲無法事先知道項目settings.py中定義的語言。
你會推薦什麼來管理這個問題?