【发布时间】:2020-03-16 17:16:07
【问题描述】:
如何通过taking/extracting values or filtering values从同一对象的现有字段中更新django模型的字段?
我有以下型号:
from django.contrib.postgres.fields import JSONField,ArrayField
class MyUrlModel(models.Model):
urls_json_data = JSONField(blank=True,null=True,default=dict)
urls_list = ArrayField(models.TextField(blank=True),blank=True,null=True,default=list)
字段urls_json_data在json中有如下数据:
[{"protocol":"http","hostname":"google.com","port":80"},{"protocol":"https","hostname":"apple.com","port":443"}]
在这里,我想从urls_json_data 获取结构并将其制成如下所示的url 结构并将它们保存在urls_list 下,即ArrayField。
urls_list=['http://google.com:80','https://apple.com:443']
所以每当urls_json_data 得到更新时,我想从中获取URL 并将其保存在urls_list 下。最好的方法是什么,是通过信号还是通过改变保存方法?
urls_list = []
for each_data in urls_json_data:
url = each_data['protocol']+each_data['hostname']+each_data['port']
urls_list.append(url)
【问题讨论】:
-
有什么理由必须先保存 json 吗?保存之前可以不把json转成url吗?
-
这就是我现在正在做的事情,我想知道当
urls_json_data字段被更新/创建时是否还有其他解决方法可以即时完成。
标签: django django-models django-rest-framework django-forms django-templates