Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using make_recipe with _quantity together with related key only applies to last item created #28

Open
urbnjamesmi1 opened this issue Apr 18, 2019 · 4 comments

Comments

@urbnjamesmi1
Copy link

Using make_recipe with _quantity together with related key only applies to last item created

Given this setup code:

mommy_recipes.py:

dog1 = recipe.Recipe(
     Dog
)

dog2 = recipe.Recipe(
    Dog
)

company = recipe.Recipe(
    Company
)

incomplete_person = recipe.Recipe(
    Person,
    dog_set=recipe.related(dog1, dog2)
)

complete_person = incomplete_person.extend(
    company=recipe.foreign_key(company)
)

In a test python file:

people = mommy.make_recipe("complete_person", _quantity=3)

Expected behavior

That each model in people has the 2 dog instances.

Actual behavior

Only the last item in people has the 2 dog instances. The first 2 are empty.

Reproduction Steps

How to reproduce this issue.

See summary above

Versions

Python: 3.6
Django: 1.9
Model Mommy: 1.6.0

@urbnjamesmi1
Copy link
Author

I was able to work around this by calling mommy.make_recipe("complete_person") in a list comprehension, but it's a bug if I use the _quantity keyword

@danizen
Copy link

danizen commented Sep 20, 2019

Declaring a kwargs that holds the attrs that transcend one recipe seems a more flexible workaround.

# dog1, dog2, and company as above

person_kwargs={
    'dog_set': recipe.related(dog1, dog2)
)

unemployed_person = Recipe(Person,
    **person_kwargs
)

employed_person = Recipe(Person, 
    company=recipe.foreign_key(company)
    **person_kwargs
)

NOTE: I also reject the notion that you need a company to be complete ;).

@urbnjamesmi1
Copy link
Author

Then extend doesn't truly extend in all cases. You have to explicitly remember these type of arguments and explicitly specify them each time? That should at least be documented, but it would be nice to have it fixed.

@danizen
Copy link

danizen commented Sep 20, 2019

@urbnjamesmi1, yes it is a bug that should be fixed, but wanted to share a possibly useful workaround.

@berinhard berinhard transferred this issue from berinhard/model_mommy Oct 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants