Ja som jasne, že som numpty, priznám sa, že na samom začiatku. Ja používam nasledujúcu továreň
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)
Keď to vytvorím PDS=DataSheetFactory(product_contributors= (<tuple of users>))
Očakávam zoznam používateľov v teréne product_contributors
, ale dostanem django.db.models.fields.related.ManyRelatedManager
namiesto toho, takže testy nebudú fungovať, čo som mal robiť, keď som nasledoval "spoločné recepty" tu?
Len na objasnenie, pýtam sa, ako používať chlapca z továrne na vytvorenie zoznamu používateľov v poli typu model od mnohých k mnohým. Skúšal som, čo bolo navrhnuté v dokumentoch, a dostanem ManyRelatedManager
, nie zoznam factory_boy
generuje nepoužiteľné inštancie.
odpovede:
4 pre odpoveď č. 1Ako bolo uvedené vyššie, váš problém pochádza z mágie, ktorú som dal do továrne: self
v @post_generation
isn "t továreň inštancie, ale skutočný objekt práve vygenerovaný.
Takže product_contributors
je skutočne inštanciou Django "RelatedManager", môžete pristupovať k položkám s:
datasheet = DataSheetFactory()
contributors = datasheet.product_contributors.all()