我有一个可重用的应用程序。在这个应用程序中,一些模型需要本地化,我正在使用 django-modeltranslation 应用程序。
使用 django-modeltranslation 导致南迁移在模型定义中包含本地化字段。
例如,我有以下模型:
class MyModel(models.Model):
name = models.CharField(...)
以及下面的 translation.py 文件
class MyModelOptions(TranslationOptions):
fields = ('name',)
translator.register(MyModel, MyModelOptions)
在我的 settings.py 中定义了两种语言 fr 和 en
如果我在这个应用程序上运行南模式迁移,南会将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 以硬编码的方式生成的。
因此,使用 django-modeltranslation 很难维护可重用应用程序的南迁移,因为无法提前知道项目的 settings.py 中定义的语言是什么。
你会推荐什么来管理这个问题?