make translations cache-happy
This commit is contained in:
Родитель
26d662ff7d
Коммит
3514ac694f
|
@ -5,6 +5,7 @@ import functools
|
|||
|
||||
from django.core import paginator
|
||||
|
||||
from .managers import CachingManager
|
||||
from .models import LegacyModel, TranslatedField
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from django.db import models
|
||||
|
||||
from . import managers
|
||||
|
||||
|
||||
class LegacyModel(models.Model):
|
||||
"""Adds automatic created and modified fields to the model."""
|
||||
|
@ -15,9 +17,11 @@ class TranslatedField(models.IntegerField):
|
|||
|
||||
def to_python(self, value):
|
||||
locale = 'en-US'
|
||||
q = Translation.objects.filter(id=value, locale=locale)
|
||||
v = q.values_list('localized_string', flat=True)
|
||||
return v[0] if v else value
|
||||
try:
|
||||
o = Translation.objects.get(id=value, locale=locale)
|
||||
return o.localized_string
|
||||
except Translation.DoesNotExist:
|
||||
return value
|
||||
|
||||
|
||||
# Putting Translation in here since TranslatedField depends on it.
|
||||
|
@ -28,5 +32,11 @@ class Translation(LegacyModel):
|
|||
locale = models.CharField(max_length=10)
|
||||
localized_string = models.TextField()
|
||||
|
||||
objects = managers.CachingManager()
|
||||
|
||||
class Meta:
|
||||
db_table = 'translations'
|
||||
|
||||
@property
|
||||
def cache_key(self):
|
||||
return self._cache_key(id=self.id, locale=self.locale)
|
||||
|
|
Загрузка…
Ссылка в новой задаче