我正在使用模型有一個屬性,其中包含Base64編碼的JSON。 我正在編寫管理視圖,它將整合由此模型和其他人表示的數據。如何在我的Django模型的屬性上運行過濾器?
- 我想在
ModelAdmin
視圖中顯示JSON的Base64解碼版本。 - 我也想運行一個查詢,它將返回行,使得解碼的JSON中的特定元素與值相匹配。
這是可以在Django嗎?
我正在使用模型有一個屬性,其中包含Base64編碼的JSON。 我正在編寫管理視圖,它將整合由此模型和其他人表示的數據。如何在我的Django模型的屬性上運行過濾器?
ModelAdmin
視圖中顯示JSON的Base64解碼版本。這是可以在Django嗎?
你必須創建具有以下代碼的自定義管理模板:
{% extends "admin/change_form.html" %}
{% load i18n %}
{% block content %}
This is the field: {{ original.payload }}
{{ block.super }}
{% endblock %}
保存爲,說,「模板/管理/ change_model_payload.html」,這增加了模型的ModelAdmin:
change_form_template = "admin/change_model_payload.html"
對於#2,您可能需要創建一個自定義模板標籤來檢索數據庫條目。
如果您期望特定類型的特定元素,那麼您最好在save()上解碼它,而不是盲目地將它存儲在base64中。
我的建議是創建一個PayloadData類,其中包含所有期望的屬性,與您的原始模型一一對應,保存()有效負載時的屬性以及可以索引的位置,查詢,篩選,排序,加入以及RDBMS允許您執行的其他有趣事情。
或溝數據庫和Django自己的ORM,並去no-sql。大多數基於文檔的nosql服務器都可以查詢(或至少創建視圖)任何類型的子字段條件。
創建一個表示JSON的模型(或其他對象)並使用序列化/反序列化來獲取值不是更爲謹慎嗎? –
我澄清了這個問題。這個模型不是我的創作。就是這樣。我只需要找到解決這個問題的方法。 – canadadry