问题标签 [django-jsonfield]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 将用户友好的 json 编辑器添加到 django admin
我有一个 django 应用程序,也使用rest_framework
,以及一个Product
字段类型为 的模型JSONField
。所以数据存储为JSON
,Postgres
现在我想为管理员提供一个很好的用户友好方式,告诉他如何更改 json 字段(names/keys and values)
。是否有扩展或有更快的方法来做到这一点。
这是数据库中的列定义。
my_column = JSONField(default={"editorial1": "text 1", "editorial_2": "text2", "editorial_3": "text"})
键和值都应该由管理员编辑
管理员不应该对 JSON 有任何了解,并且不应该输入/编辑任何 json 格式字段
django - 如何在不破坏 Django 迁移的情况下删除自定义字段?
我在使用旧的django-json-field库的 Django 1.8 项目上工作。我想删除该库,更新到 Django 1.9 并使用本机 JSONField,但我的迁移依赖于旧库中的 JSONField,所以我无法删除它。我也无法在不删除它的情况下更新 Django,因为它已被弃用,并且在我尝试更新 Django 时会导致错误。在这种情况下进行的正确方法是什么?
python - 表单中的 Django JSON 字段
这是我的问题。我正在尝试创建包含所选产品属性值的产品变体。我正在尝试使用 JSONField 来做到这一点,但我想知道如何在表单中动态显示字段以创建新的产品变体。
这是我的 models.py 文件:
如果您对我如何解决此问题有任何想法,请帮助我!
谢谢
django - Django响应错误'unicode'对象没有属性'_meta'json
我正在使用 django 1.11,我在存储 Json 响应方面遇到了困难。这是我的 views.py 代码
视图.py
请帮助我,我收到了这个错误
“unicode”对象没有属性“_meta”
这是回溯
追溯:
追溯:
内部 41 中的文件“C:\Python27\lib\site-packages\django\core\handlers\exception.py”。 response = get_response(request)
_get_response 187 中的文件“C:\Python27\lib\site-packages\django\core\handlers\base.py”。response = self.process_exception_by_middleware(e, request)
_get_response 185 中的文件“C:\Python27\lib\site-packages\django\core\handlers\base.py”。 response = Wrapped_callback(request, *callback_args, **callback_kwargs)
posttodb 中的文件“C:\Users\admin\Desktop\SREC_OBA\cbcsportal\views.py” 34. data.renderJSON = jsonvalue(request)
jsonvalue 21 中的文件“C:\Users\admin\Desktop\SREC_OBA\cbcsportal\views.py”。ds = serializers.serialize('json', d)
序列化 129 中的文件“C:\Python27\lib\site-packages\django\core\serializers__init__.py”。 s.serialize(queryset, **options)
序列化 84 中的文件“C:\Python27\lib\site-packages\django\core\serializers\base.py”。concrete_model = obj._meta.concrete_model
异常类型:/cbcs/posttodb 处的 AttributeError 异常值:“unicode”对象没有属性“_meta”
json - 使用 JSONField 订购 Django 查询集的最快方法是什么?
我有一个主要将数据存储在 JSON 字段中的模型。它的设置如下:
通常,数据字段具有以下格式:
现在,在一个视图中,我想获取前 20 条记录,但使用 format 排序['-age', 'name']
。我有什么选择这样做?现在,我能想到的唯一解决方案是使用 获取所有记录,并在使用字段 jsonRecord.objects.all()
进行排序时迭代整个事情。data
有没有更快的方法来做到这一点?或者这是我唯一的解决方案?此外,如果我要以这种方式解决它,我将如何对记录进行排序,这对我的数据库来说会是一个巨大的性能问题吗?谢谢。
编辑:我不能将所有内容都放入单独的字段中。它必须是使用 PostgreSQL 数据库的 JSONField。
django - django JSONField 正则表达式
我正在使用 Django 2.1,并且我有带有 JSONField(record) 的模型:
要查询确切的“价值”,我使用:
我的问题是,如何将正则表达式与“值”一起使用?例如
python - Django JsonField 到表单
我已经搜索了几天,试图找到一种 DRY 方法来使用 django 的内置验证和表单呈现从 JsonField 创建动态表单。我还没有找到一个包含 django 验证和渲染的解决方案,所以我想为此创建一个模块,但我很难弄清楚这些类是如何工作的。
我尝试了几种不同的方法,例如:
模型.py
表格.py
这是我得到的错误:
错误
它看起来像forms.Form
子类forms.BaseForm
,forms.DeclaritaveFieldsMetaclass
但我不知道如何子类 forms.Form 以从字典中传递动态字段。我还尝试了以下方法:
视图.py
我不只是在问一个答案,我真正想知道的是有人如何遍历所有这些类来弄清楚如何对它们进行子类化。我想我可以通过自己编写所有逻辑、验证等来弄清楚如何完成这项工作,但我希望这是一个其他人可以使用的模块。
网址.py
编辑
我最初是从记忆中输入代码并且有一些拼写错误。我从我的代码库中复制了代码并包含了 urls.py。
django - 使用 JSONField 的属性对 Django 查询集进行排序
我有一个看起来像这样的模型:
该data
字段有 2 个属性name
, 和age
。现在,假设我想要一个分页查询集(每页包含 20 人),过滤器age
大于 25,并且查询集按降序排序。在通常的设置中,即规范化数据库中,我可以这样编写这个查询:
现在,当使用存储在 JSONField 中的键进行过滤和排序时,上面的等价物是什么?我对此进行了研究,似乎它是 2.1 的一个功能,但我似乎找不到任何相关的东西。
我还有一个问题。假设我们使用 JSONField 进行过滤和排序。在这种情况下,ORM 是否必须在发送前 20 个对象之前获取所有对象、过滤和排序它们?也就是说,性能会合法地变慢吗?
显然,我知道标准化数据库对于这些事情要好得多,但我的手有点束缚。
django - 使用 JSONField 的属性对 Django 查询集进行排序,前提是该属性并非随处可见
这是一个非常复杂的问题,所以让我解释一下。我有一个名为 Person 的模型,它将大部分数据存储在 JSONField 中。
现在,数据字段通常采用以下格式:
现在,我要做的是创建一个 Person 的查询集,它使用age
其字段中的属性data
按降序对对象进行排序。这是使用以下代码解决的:
这很棒,而且效果很好。但是,在测试期间,我将data
一个 Person 对象的属性更改为如下所示:
age
也就是说,该对象在其data
字段中没有属性。现在,当我运行上面的查询时,它仍然可以正常工作,但是这个对象(没有age
属性的对象)位于最顶部。这是由于以下两个原因之一:
- 由于其
age
为空,因此由于降序 order_by 函数将其发送到顶部。 - 它是我上次创建的对象,所以它总是在开头,但是因为它没有
age
属性,所以它根本不受 order_by 函数的影响,它保持在原来的位置。
我真正想做的是将所有age
在其字段中没有属性的对象发送data
到查询集的最后。
我通过创建 2 个查询集(一个年龄不为空,一个为空)尝试了联合方法,并使用|
运算符将它们连接起来。这不起作用,因为订购搞砸了。我还尝试了在另一个问题中发现的这种奇怪的方法(也没有用):
无论如何,有没有不涉及列表、itertools 和链的方法来做到这一点?因为我听说它们有时会很慢。
谢谢!
注意:请不要回答有关为这些查询规范化数据库而不是使用 JSONFields 的问题。我很清楚规范化的好处,但对于我的用例,它必须是 JSONField。