Django自定义场实现多语言的方法

  介绍

小编给大家分享一下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   null

Django自定义场实现多语言的方法