Я пытаюсь создать экземпляр модели, в которой одно из полей равно JSONField
. При создании экземпляра модели через factoryboy
я хочу сохранить поле как JSONField в тестовой базе данных. При простой передаче поля как JSON
оно сохраняется в типе данных Unicode
. Я застрял на этом.
сохранить поле как JSON, используя factoryboy
Ответы (2)
Вы можете создать данные dict, используя 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 = ...
person
Danielle Madeley
schedule
14.12.2016
Вы пытались передать значение как словарь? Затем его необходимо преобразовать в JSON.
person
silentser
schedule
20.09.2016
**kwargs
dict и передать его вашей модели Django; Я бы посоветовал сначала сделать пример кода того, что вы хотите получить без factory_boy, и только потом собирать его через factory_boy. - person Xelnor   schedule 03.06.2015