[Solved]-Save a field as JSON using factoryboy


You can create dict data using a factory.Dict. You can then control the final form of the data using the dict_factory attribute.

e.g. if you want to have dict data that is serialised to a JSON string, you can do something like this:

import json
import factory

class JSONFactory(factory.DictFactory):
    Use with factory.Dict to make JSON strings.
    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 = ...


Have you tried passing the value as a dictionary? It must be then converted to JSON.


Leave a comment