介绍
小编给大家分享一下Django自定义场实现多语言的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<>强自定义数据库字段强>
扩展默认的models.CharField和模型。TextField使之成为支持多语言的字段。可以轻松实现复用,无需配置多余选项。
得到django.conf import 设置 得到django.db import 模型 得到django.utils.translation import  get_language class MultilingualField (models.Field): ,,,SUPPORTED_FIELD_TYPES =, (models.TextField models.CharField也) ,,,def __init__(自我,,verbose_name=没有,,* * kwargs): ,,,,,,,self.localized_field_model =,没有 ,,,,,,,for model 拷贝MultilingualField.SUPPORTED_FIELD_TYPES: ,,,,,,,,,,,if issubclass (self.__class__,模型): ,,,,,,,,,,,,,,,self.localized_field_model =,模型 ,,,,,,,self._blank =, kwargs.get (“blank",,假) ,,,,,,,self._editable =, kwargs.get (“editable",,真的) ,,,,,,,超级(). __init__ (verbose_name, * * kwargs) ,,@staticmethod ,,,def localized_field_name(名字,,lang_code): ,,,,,,,lang_code_safe =, lang_code.replace(“产生绯闻,“_") ,,,,,,,return f" {name} _ {lang_code_safe}“; ,,,def get_localized_field (lang_code,自我,还以为;lang_name): ,,,,,,,=,(self._blank _blank  ,,,,,,,,,,,,,,,,,if lang_code ==settings.LANGUAGE_CODE ,,,,,,,,,,,,,,,,,else 真正的) ,,,,,,,localized_field =, self.localized_field_model ( ,,,,,,,,,,,f" {self.verbose_name}, {lang_name}“, ,,,,,,,,,,,的名字=self.name, ,,,,,,,,,,,primary_key=self.primary_key, ,,,,,,,,,,,max_length=self.max_length, ,,,,,,,,,,,=self.unique独特, ,,,,,,,,,,,空白=平等自愿, ,,,,,,,,,,,null=False,, #, ignore 我方表示歉意,null 争论。 ,,,,,,,,,,,db_index=self.db_index, ,,,,,,,,,,,默认=self.default 或是““, ,,,,,,,,,,,可编辑=self._editable, ,,,,,,,,,,,=self.serialize序列化, ,,,,,,,,,,,选择=self.choices, ,,,,,,,,,,,help_text=self.help_text, ,,,,,,,,,,,db_column=没有 ,,,,,,,,,,,db_tablespace=self.db_tablespace) ,,,,,,,return localized_field ,,,def contribute_to_class (cls,自我,,名字, ,,,,,,,,,,,,,,,,,,,,,,,,,,,private_only=False): ,,,,,,,def translated_value(自我): ,,,,,,,,,,,language =, get_language () ,,,,,,,,,,,val =, self.__dict__.get ( ,,,,,,,,,,,,,,,MultilingualField.localized_field_name ( ,,,,,,,,,,,,,,,,,,,,,,,,,语言)) ,,,,,,,,,,,if not val: null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullDjango自定义场实现多语言的方法