Я работаю над фабрикой для модели и пытаюсь заполнить поле со списком вариантов. Когда я пытаюсь создать объект с помощью Factory, где я пытаюсь заполнить случайный выбор из списка выбора, возникает исключение:
TypeError: «выбор» является недопустимым аргументом ключевого слова для этой функции.
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/factory/base.py", line 551, in build
return cls._generate(enums.BUILD_STRATEGY, kwargs)
File "/usr/local/lib/python2.7/dist-packages/factory/base.py", line 505, in _generate
return step.build()
File "/usr/local/lib/python2.7/dist-packages/factory/builder.py", line 279, in build
kwargs=kwargs,
File "/usr/local/lib/python2.7/dist-packages/factory/base.py", line 312, in instantiate
return self.factory._build(model, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/factory/base.py", line 531, in _build
return model_class(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 571, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
TypeError: 'choice' is an invalid keyword argument for this function
Используемые версии:
django==1.11
factory-boy==2.9.2
python==2.7.12
(Обрезанная) модель:
class Server(models.Model):
TEST = 'test'
ACCEPT = 'accept'
SERVER_TYPES = (
(TEST, _("Testing Server")),
(ACCEPT, _("Acceptation Server"))
)
type = models.CharField(_("Server type"), max_length=50, choices=SERVER_TYPES)
Фабрика (обрезанная):
class ServerFactory(factory.DjangoModelFactory):
type = factory.Faker('random_element', elements=[choice[0] for choice in Server.SERVER_TYPES)
class Meta:
model = Server
Вместо использования Faker('random_element, elements=[..])
я также пытался использовать LazyFunction
:
def get_server_type():
choices = [choice[0] for choice in Server.SERVER_TYPES]
return random.choice(choices)
class ServerFactory(factory.DjangoModelFactory):
organization = factory.SubFactory(OrganizationFactory)
type = factory.LazyFunction(get_server_type)
.. Meta ..
Это также вызывает ту же ошибку. Я также не могу найти никаких других реальных альтернатив, чтобы исправить это. Любые предложения, как я могу заполнить поле type
одним из вариантов SERVER_TYPES
при использовании пакета factory
?