【问题标题】:save a field as JSON using factoryboy使用 factoryboy 将字段保存为 JSON
【发布时间】:2015-06-02 13:40:31
【问题描述】:

我正在尝试创建一个模型实例,其中一个字段是JSONField。通过factoryboy 创建模型实例时,我想将该字段保存为测试数据库中的 JSONField。只需将字段作为JSON 传递,它就会存储在Unicode 数据类型中。我被困在这上面了。

【问题讨论】:

  • 嗨,没有看到任何代码很难回答这个问题。 factory_boy 将做的只是构建一个大的**kwargs dict 并将其传递给您的 Django 模型;我建议首先制作一些代码示例,说明您希望在没有 factory_boy 的情况下发生什么,然后再通过 factory_boy 构建它。

标签: django factory-boy


【解决方案1】:

您可以使用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 = ...

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多