Shshzik
@Shshzik
Начинающий

Как динамично подключить поле из модели?

Нужно сделать сайт с поддержкой разных языков. Как сделать текст в шаблонах - это понятно. Но столкнулся с проблемой в моделях.
Есть модель новости.
class News(models.Model):
    title = models.CharField(max_length=200, verbose_name='Заголовок')
    slug = models.SlugField(max_length=200, unique=True)
    pub_date = models.DateField(verbose_name='Дата публикации')
    intro_text = models.TextField(verbose_name='Краткий текст')
    intro_text_en = models.TextField(verbose_name='Краткий текст на английском')
    full_text = models.TextField(verbose_name='Полный текст')
    full_text_en = models.TextField(verbose_name='Полный текст на английском')
    hidden = models.BooleanField(default=False, verbose_name='Скрыт')

    def save(self, *args, **kwargs):
        self.slug = slugify(unidecode(self.title))
        super(News, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('news_page', kwargs={
            'slug': self.slug,
        })

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'Новость'
        verbose_name_plural = 'Новости'


Возникает вопрос как вывести нужное поле при выбранном языке.
Можно ли как-то так вывести поле примерно так - {{ news['full_text' + select_lng] }}?
Если нет, то можете предложит какой-то более правильный вариант?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
@DmitryBurn
Бекенд разработчик Python/Django
Лучше на уровне подготовки контекста (во вьюхе) определить текущий язык и подкинуть нужный контент в переменную...
Как другой вариант - написать свой шаблонный фильтр , которому передавать объект статьи и текущий язык .. который будет выводить нужный контент
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Volton
Ну так есть инструменты в работе с мультиязычным контентом.
Например: django-modeltranslation, django-parler
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы