【问题标题】:django-rest-framework-datatables and Django Parler's translation fielddjango-rest-framework-datatables 和 Django Parler 的翻译字段
【发布时间】:2019-08-10 06:01:16
【问题描述】:

我有带有翻译字段的模型。

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: Unsupported lookup 'en' for AutoField or join on the field not allowed。 如果我没有将 .en 附加到 {'data'} 它当然会给出 Object.object。

【问题讨论】:

    标签: django datatables django-rest-framework django-datatable django-parler


    【解决方案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

    实际的问题是,在向服务器发出 get 请求时 数据表将在列参数中添加名称值,所以

    而不是写

    “名称”:“translations.en.field_name”

    写下来:

    “名称”:“translations.field_name”

    删除语言代码

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多