Hi, I think I finally found the issue that I had a hard time identifying.
I have a few models that define or use custom managers.
It would seem that, in such cases, we lose the translation...
class MyClassManager(models.Manager):
def get_query_set(self):
now = timezone.now()
return super(MyClassManager, self).get_query_set()
def get_active(self):
now = timezone.now()
return super(MyClassManager, self).get_query_set() \
.filter(status='p') \
.filter(end_date__gte=now) def get_active(self):
class MyClass(models.Model):
text = models.CharField(...)
status = CharField(...)
end_date = models.DateTimeField()
objects = active = MyClassManager()
from model_i18n import translator # django-model-i18n
from .models import Announcement
class AnnouncementTranslation(translator.ModelTranslation):
fields = ('title','body')
translator.register(Announcement, AnnouncementTranslation)
class DetailView(generic.DetailView):
...
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['c1'] = MyClass.objects.get_active().filter(field=...) # not translated
context['c2'] = MyClass.active.filter(field=...) # not translated either
{% load_i18n %}
{% mycontext %}
I'm not sure I'm doing everything right...
I didn't want to override get_query_set directly because there are cases where I want objects to remain unfiltered.
Any idea?