问题标签 [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.

0 投票
3 回答
7807 浏览

django - 将用户友好的 json 编辑器添加到 django admin

我有一个 django 应用程序,也使用rest_framework,以及一个Product字段类型为 的模型JSONField。所以数据存储为JSONPostgres现在我想为管理员提供一个很好的用户友好方式,告诉他如何更改 json 字段(names/keys and values)。是否有扩展或有更快的方法来做到这一点。

这是数据库中的列定义。 my_column = JSONField(default={"editorial1": "text 1", "editorial_2": "text2", "editorial_3": "text"})

键和值都应该由管理员编辑

管理员不应该对 JSON 有任何了解,并且不应该输入/编辑任何 json 格式字段

0 投票
1 回答
361 浏览

django - 如何在不破坏 Django 迁移的情况下删除自定义字段?

我在使用旧的django-json-field库的 Django 1.8 项目上工作。我想删除该库,更新到 Django 1.9 并使用本机 JSONField,但我的迁移依赖于旧库中的 JSONField,所以我无法删除它。我也无法在不删除它的情况下更新 Django,因为它已被弃用,并且在我尝试更新 Django 时会导致错误。在这种情况下进行的正确方法是什么?

0 投票
1 回答
795 浏览

python - Django allauth 社交应用程序额外数据

所以我已经在我的 Django 项目上设置了 Django allauth 并连接到 Instagram,这样做时,我现在在我的管理网站上拥有我的帐户注册的社交帐户类别,到目前为止一切都很好

在下面的页面上,我可以看到一个名为额外数据的字段,我怎样才能将它放在普通的用户数据库中,这样我就可以使用它来获取我从额外数据中获得的关注者数量?我可以用我拥有的令牌请求关注者吗?

在此处输入图像描述

0 投票
0 回答
1109 浏览

python - 表单中的 Django JSON 字段

这是我的问题。我正在尝试创建包含所选产品属性值的产品变体。我正在尝试使用 JSONField 来做到这一点,但我想知道如何在表单中动态显示字段以创建新的产品变体。

这是我的 models.py 文件:

如果您对我如何解决此问题有任何想法,请帮助我!
谢谢

0 投票
1 回答
436 浏览

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”

0 投票
0 回答
112 浏览

json - 使用 JSONField 订购 Django 查询集的最快方法是什么?

我有一个主要将数据存储在 JSON 字段中的模型。它的设置如下:

通常,数据字段具有以下格式:

现在,在一个视图中,我想获取前 20 条记录,但使用 format 排序['-age', 'name']。我有什么选择这样做?现在,我能想到的唯一解决方案是使用 获取所有记录,并在使用字段 jsonRecord.objects.all()进行排序时迭代整个事情。data有没有更快的方法来做到这一点?或者这是我唯一的解决方案?此外,如果我要以这种方式解决它,我将如何对记录进行排序,这对我的数据库来说会是一个巨大的性能问题吗?谢谢。

编辑:我不能将所有内容都放入单独的字段中。它必须是使用 PostgreSQL 数据库的 JSONField。

0 投票
1 回答
339 浏览

django - django JSONField 正则表达式

我正在使用 Django 2.1,并且我有带有 JSONField(record) 的模型:

要查询确切的“价值”,我使用:

我的问题是,如何将正则表达式与“值”一起使用?例如

0 投票
1 回答
1538 浏览

python - Django JsonField 到表单

我已经搜索了几天,试图找到一种 DRY 方法来使用 django 的内置验证和表单呈现从 JsonField 创建动态表单。我还没有找到一个包含 django 验证和渲染的解决方案,所以我想为此创建一个模块,但我很难弄清楚这些类是如何工作的。

我尝试了几种不同的方法,例如:

模型.py

表格.py

这是我得到的错误:

错误

它看起来像forms.Form子类forms.BaseFormforms.DeclaritaveFieldsMetaclass但我不知道如何子类 forms.Form 以从字典中传递动态字段。我还尝试了以下方法:

视图.py

我不只是在问一个答案,我真正想知道的是有人如何遍历所有这些类来弄清楚如何对它们进行子类化。我想我可以通过自己编写所有逻辑、验证等来弄清楚如何完成这项工作,但我希望这是一个其他人可以使用的模块。

网址.py

编辑

我最初是从记忆中输入代码并且有一些拼写错误。我从我的代码库中复制了代码并包含了 urls.py。

0 投票
1 回答
844 浏览

django - 使用 JSONField 的属性对 Django 查询集进行排序

我有一个看起来像这样的模型:

data字段有 2 个属性name, 和age。现在,假设我想要一个分页查询集(每页包含 20 人),过滤器age大于 25,并且查询集按降序排序。在通常的设置中,即规范化数据库中,我可以这样编写这个查询:

现在,当使用存储在 JSONField 中的键进行过滤和排序时,上面的等价物是什么?我对此进行了研究,似乎它是 2.1 的一个功能,但我似乎找不到任何相关的东西。

链接到关于它在未来实施的票

我还有一个问题。假设我们使用 JSONField 进行过滤和排序。在这种情况下,ORM 是否必须在发送前 20 个对象之前获取所有对象、过滤和排序它们?也就是说,性能会合法地变慢吗?

显然,我知道标准化数据库对于这些事情要好得多,但我的手有点束缚。

0 投票
1 回答
829 浏览

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。