Django object.values с псевдонимом / переводом?

Возможно ли использовать что-то вроде псевдонима для атрибута модели django и перевода тоже? Например, есть такая модель:

class TestModel(models.Model):
    field1 = models.CharField(
        "Source (U)ID",
        max_length=150,
        help_text="Some helptext",
    )
    field2....
    field3....

Теперь вы обращаетесь к модели в представлении следующим образом:

transactions = (
    Transaction.objects.all()
)

transactions.values(
    Id=F("field1"),
    Json=F("field2"),
    BookingDate=F("field3"),
)

Here we use an alias, but I have to specifically pick the values by hand and set them every time.
Is there a better way to do that?

A translation would be very useful too, since the data will be passed to a template and a table will be rendered with the data.
So there is no good way to do it in the templates since the template doesn't know what fields it gets. It just renders what it gets. So the translation has to happen in the view/model somehow.

Спасибо!

Эйдт:
Чтобы прояснить ситуацию:
Если я использую objects.values для атрибута с установленным verbose_name, то objects.values все равно вернет невербозные имена полей. А поскольку я делаю рендеринг фронтенда через Js (так как он должен быть интерактивным) в общей функции, я не могу изменить имена полей во фронтенде.
Таким образом, это должно быть сделано в представлении / возможно, в модели, если это возможно.

Получение значений модели в представлении Django

Я не уверен на 100%, что понимаю, чего вы добиваетесь, но я бы сказал, что лучший способ достичь того, о чем вы говорите, - это просто использовать общее представление деталей.

Django generic DetailView

Перевод (L10n/I18n)

Перевод и локализация в Django - это обширная тема, поэтому я укажу вам на несколько хороших ресурсов:

В двух словах, как говорит Сельчук, вы можете назначить "verbose_name" для полей модели, а затем создать переводы для этих verbose_name позже. Этот вопрос на StackOverflow посвящен именно этой теме, как и этот учебник от Automation Panda (на который я также дал ссылку в качестве последнего пункта в списке выше).

Интернационализация/локализация/перевод в коде JavaScript

Это немного сложнее, но в документации Django есть раздел, специально посвященный этой теме: Интернационализация в коде JavaScript. По сути, вы используете представление под названием JavaScriptCatalog, которое создаст для вас кучу различных методов, связанных с переводом (например, gettext()) в JavaScript.

Этот учебник здесь немного подробнее рассказывает о трансляции JS-кода с помощью JavaScriptCatalog view.

Надеюсь, эта информация поможет!

Вернуться на верх