support for I18nField in orm wrapper
This commit is contained in:
parent
c012f0cde3
commit
08621fa6d0
3 changed files with 33 additions and 21 deletions
|
@ -16,16 +16,21 @@ def get_current_obj(model, pk, only_field=None):
|
|||
|
||||
|
||||
def get_field_value(obj, field: Union[str, models.Field]):
|
||||
lang = None
|
||||
if isinstance(field, str):
|
||||
name = field
|
||||
model = type(obj)
|
||||
field = model._meta.get_field('titles' if name.startswith('title_') else name)
|
||||
if '__i18n__' in name:
|
||||
orig_name, i18n, lang = name.split('__')
|
||||
field = model._meta.get_field(orig_name)
|
||||
else:
|
||||
field = model._meta.get_field(name)
|
||||
else:
|
||||
name = field.name
|
||||
try:
|
||||
current_value = getattr(obj, field.attname)
|
||||
except AttributeError:
|
||||
current_value = field.to_prep_value(getattr(obj, field.name))
|
||||
if name.startswith('title_'):
|
||||
current_value = current_value.get(name[6:], '')
|
||||
if lang:
|
||||
current_value = current_value.get(lang, '')
|
||||
return current_value
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue