Answer the question
In order to leave comments, you need to log in
How to display the text with the RU language tag from the child table with texts in a multilingual system?
Hello. Python 3.6.2 / Django 1.11.5 is used.
There is a code that allows you to create, for example, for post texts and / or headings, variants in different languages (the code is given below). It is necessary to display texts in Russian from the created child table.
This is how the simplified models look like (only the main fields):
# Дочерняя таблица текстов записей, использует абстрактный класс LingvaEnhavoAbstrakta
class EnskriboTeksto(LingvaEnhavoAbstrakta):
# UUID записи
uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid4, editable=False)
# дата и время создания
krea_dato = models.DateTimeField(_('Krea dato'), auto_now_add=True, auto_now=False, blank=False)
# имя родительского класса в котором нужное поле, имя взято в кавычки, так как класс ещё не объявлен
posedanto = models.ForeignKey('Enskribo')
class Meta:
db_table = 'enskriboj_tekstoj'
# Записи
class Enskribo(models.Model):
# UUID записи
uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid4, editable=False)
# дата и время создания
krea_dato = models.DateTimeField(_('Krea dato'), auto_now_add=True, auto_now=False, blank=False)
# текст в дочерней таблице текстов
teksto = models.ForeignKey(EnskriboTeksto, verbose_name=_('Teksto'), blank=True, null=True)
class Meta:
db_table = 'enskriboj'
class LingvaEnhavoAbstrakta(models.Model):
@staticmethod
def model_name_ticket():
return '%(app_label)s_%(class)s_'
# UUID записи
uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid4, editable=False)
# дата и время создания
krea_dato = models.DateTimeField(_('Krea dato'), auto_now_add=True, auto_now=False, blank=False)
# владелец (главная запись для которой создаётся мультиязычный контент)
posedanto = models.UUIDField(_('Posedanta UUID'), blank=False, db_index=True)
# выбор языкового кода из справочника
lingvo = models.ForeignKey(LingvaKodo, verbose_name=_('Lingvo'), blank=False, default=None)
# содержимое (СОЗДАЁТСЯ ТО ПОЛЕ ИЗ КОТОРОГО НУЖНО БРАТЬ ТЕКСТ)
enhavo = models.TextField(_('Enhavo'))
# автор содержимого (пользователь)
autoro = models.ForeignKey(Homo, verbose_name=_('Aŭtoro'))
# пользователь последний обновивший запись
lasta_renoviginta_uzanto = models.ForeignKey(Homo, related_name=model_name_ticket.__func__() + 'LastRenUzanto',
verbose_name=_('Lasta renoviginta uzanto'), blank=True, null=True)
# последняя дата и время обновления
lasta_renoviga_dato = models.DateTimeField(_('Lasta renoviga dato'), blank=True, null=True)
class Meta:
abstract = True
def blogo(request):
enskriboj = Enskribo.objects.filter(krea_dato__lte=timezone.now()).order_by('krea_dato')
return render(request, 'blogo/blogo.html', {'enskriboj': enskriboj})
{% for enskribo in enskriboj %}
{{ enskribo.krea_dato }}
{{ enskribo.teksto }}
{% endfor %}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question