的內部動態的關鍵,我需要改變我的數據的「關鍵」,當它輸出。重命名蟒蛇值
我不確定django是否可以做到這一點。 FWIW,這將輸出到彈性搜索(不確定是否相關)。
基本上它與{"level":1 }
出來,但我想它說{"level_1":1}
而不是。
這是如何實現的?這裏是我當前的代碼
class Tag(models.Model):
name = models.CharField("Name", max_length=5000, blank=True)
level = models.IntegerField(null=True, blank=True)
class Entry(models.Model):
title = models.CharField("Title", max_length=10000, blank=True)
tag = models.ManyToManyField('Tag', blank=True)
def indexing(self):
obj = TaskIndex(
meta={'id': self.id},
title=self.title,
tag=list(self.tag.values('name').annotate(level=F('level_%)))
)
obj.save()
return obj.to_dict(include_meta=True)
結果的外觀:
[
{
"title":"Test item",
"tag":[
{
"name":"Nope",
"level":1
},
{
"name":"Yep",
"level":2
}
],
}
]
我怎麼想的結果看:
[
{
"title":"Test item",
"tag":[
{
"name":"Nope",
"level_1":1
},
{
"name":"Yep",
"level_2":2
}
],
}
]
Search.py
class TaskIndex(DocType):
title = String()
class Meta:
index = 'task-index'
# Bulk indexing function, run in shell
def bulk_indexing():
TaskIndex.init()
es = Elasticsearch()
bulk(client=es, actions=(b.indexing() for b in models.Task.objects.all().iterator()))
# Simple search function
def _search(title):
s = Search().filter('term', title=title.text)
response = s.execute()
return response
一些測試數據運行如何只添加新關鍵字而不是嘗試重命名鍵? –
因爲我使用的searchkit庫只查看關鍵字。 – Ycon