[英]django-rest-framework-datatables and Django Parler's translation field
我有帶有翻譯字段的模型。
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。
問題出在模板文件中。
將名稱和數據字段分別傳遞給數據表配置中的列
請將field_name
替換為您的模型字段名稱
$('#devices').DataTable({
'ajax': 'api/devices/?format=datatables',
'columns': [
{"data": "translations.en.field_name" , "name": "translations.field_name"},
]
});
有關更多詳細信息,請參閱django-rest-framework-datatables
實際問題是,在向服務器數據表發出 get 請求時會在列參數中添加名稱值,因此
而不是寫作
"name": "translations.en.field_name"
寫下:
"name": "translations.field_name"
刪除語言代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.