Arhn - архитектура программирования

django-rest-framework-datatables и поле перевода Django Parler

У меня есть модель с переведенными полями.

class Device(TranslatableModel):
    translations = TranslatedFields(name=models.CharField(max_length=100))

Я сделал сериализатор, например:

class DeviceSerializer(TranslatableModelSerializer):
    translations = TranslatedFieldsField(shared_model=Device)

    class Meta:
        model = Device
        fields = ('translations',)

Это дает мне хороший JSON, как и должно быть.

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
          "device": {
               "translations": {
                   "en": {
                       "name": "Sample Device"
                    }
                }
           }              
        }
    ]
}

Теперь я хочу использовать его с django-rest-framework. В моем шаблоне я написал скрипт вроде:

$('#devices').DataTable({
    'serverSide': true,
    'ajax': 'api/devices/?format=datatables',
    'columns': [
        {'data':'device.translations.en'}

Он отказывается работать со мной. Я получаю django.core.exceptions.FieldError: неподдерживаемый поиск 'en' для AutoField или объединение в поле не разрешено. Если я не добавляю .en к {'data'}, это, конечно, дает Object.object.


Ответы:


1

Проблема в файле шаблона.

Передать поле имени и данных отдельно в столбцы в конфигурации таблицы данных

пожалуйста, замените field_name именем поля вашей модели

$('#devices').DataTable({
    'ajax': 'api/devices/?format=datatables',
    'columns': [
        {"data": "translations.en.field_name" , "name": "translations.field_name"},
    ]
});

для получения более подробной информации см. django-rest-framework-datatables

& Django-parler-rest

Фактическая проблема заключается в том, что при выполнении запроса на получение таблицы данных сервера будет добавлено значение имени в параметр столбца, поэтому

вместо того, чтобы писать

имя: translations.en.field_name

записывать:

имя: translations.field_name

удалить код языка

24.01.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..