【发布时间】:2021-08-29 21:38:34
【问题描述】:
我想查询一个具有 Char 字段的对象,在每次调用对象时,我将返回相应值的正确数据类型。
例如,
class A(models.Model):
tweet = models.CharField(max_length=120, default=dict)
所以,
>>> a = A.objects.first()
>>> a.tweet
>>> {'x': '1'}
这应该返回,而不是:
{'x': 1}
出于某种原因,我不想按照我期望的查询方式保存该字段。
提前致谢
【问题讨论】:
-
您确定这是
CharField,而不是JsonField?在这种情况下,a.tweet的结果应该始终是字符串,而不是字典。 -
这是一个字符串,和 {"x": "1"} 注意双引号一样。你的意思可能是
JSONField。但是,对于您的实现,您需要通过json.loads解析此 JSON 字符串。 -
@AhmedI.Elsayed 挑战在于每次调用这个对象时我都必须解析它。我想编写一个自定义模型管理器并为该字段稍微更改查询集。但这似乎对我不起作用:(
-
@twingo 这基本上就是威廉和我提到的
JSONField的工作原理。
标签: django django-models django-orm