Я, очевидно, будучи пустим, визнаю, що на самому початку. Я використовую наступний завод
class DataSheetFactory(factory.DjangoModelFactory):
class Meta:
model = models.myModel
django_get_or_create = ("key_field",)
key_field = factory.Sequence(lambda n: n)
... <additional fields>
@factory.post_generation
def product_contributors(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for person in extracted:
self.product_contributors.add(person)
Коли я створюю це з PDS=DataSheetFactory(product_contributors= (<tuple of users>))
Я очікую список користувачів у цій сфері product_contributors
, але я отримую django.db.models.fields.related.ManyRelatedManager
замість того, щоб тести не працювали. Що я мав робити, як я дотримувався "Загальних рецептів" тут?
Просто для уточнення, я запитую, як використовувати хлопчика-фабрику, щоб створити список користувачів у полі-до-багатьох в моделі. Я спробував те, що було запропоновано в документах, і я отримаю ManyRelatedManager
, не список, так factory_boy
генерує непридатні для використання екземпляри.
Відповіді:
4 для відповіді № 1Як зазначалося вище, ваша проблема походить від магії, яку я поставив у factory_boy: self
в @post_generation
це не заводський примірник, а реальний об'єкт, що просто згенерований.
Таким чином, product_contributors
дійсно примірник "RelatedManager" Django, ви можете отримати доступ до елементів за допомогою:
datasheet = DataSheetFactory()
contributors = datasheet.product_contributors.all()