9

我正在尝试创建一个模型实例,其中一个字段是JSONField. 通过创建模型实例时factoryboy,我想将该字段另存为 JSONField 在测试数据库中。只需将字段传递为JSON,它就会存储在Unicode数据类型中。我坚持这一点。

4

2 回答 2

14

您可以使用factory.Dict. 然后,您可以使用该dict_factory属性控制数据的最终形式。

例如,如果您想要将dict数据序列化为 JSON 字符串,您可以执行以下操作:

import json
import factory


class JSONFactory(factory.DictFactory):
    """
    Use with factory.Dict to make JSON strings.
    """
    @classmethod
    def _generate(cls, create, attrs):
        obj = super()._generate(create, attrs)
        return json.dumps(obj)


class BadgerFactory(factory.Factory):

    form_data = factory.Dict({
        'badger': ['stoat'],
    }, dict_factory=JSONFactory)

    class Meta:
        model = ...
于 2016-12-14T23:52:41.633 回答
-1

您是否尝试过将值作为字典传递?然后必须将其转换为 JSON。

于 2016-09-20T16:19:45.280 回答