Модельный рецепт мамы с обратным FK

Я использую model_mommy с тестами Django для создания объектов. У меня возникли проблемы с созданием модели с обратным FK. Я могу сделать это наоборот в качестве обходного пути, но пока это работает, это выглядит неправильно, поэтому мне интересно, могу ли я сделать это наоборот?

Скажем, у меня есть две модели, User и Profile, связанные через FK от профиля к пользователю (это не один к одному, это просто FK). Модель профиля имеет логический вызов атрибута is_aardvark.

В модели мама я могу создавать такие рецепты:

aardvark_profile = Recipe(Profile, is_aardvark=True)
non_aardvark_profile = Recipe(Profile, is_aardvark=False)

Затем я могу создать пользователя с профилем трубкозуба в своем тесте, например:

user = mommy.create_recipe(aardvark_profile).user

Это кажется неправильным, так как я создаю пользователя с помощью рецепта aardvark_profile. В идеале я хочу создать пользователя с помощью какого-то пользовательского рецепта (возможно, в будущем у меня будет какая-то другая модель FKd для пользователя, поэтому вышеизложенное не сработает).

Я пробовал такие вещи, как ниже, которые не работают:

# doesn't work
broken_aardvark_user = Recipe(User, profile_set=mommy.create_recipe(aardvark_profile)

Это вообще возможно? Любые идеи? Я мог бы просто создать вспомогательный метод, чтобы сделать это для меня, если ничего не помогает.

Спасибо!


person Ludo    schedule 29.07.2014    source источник
comment
Вы должны добавить ссылку, чтобы объяснить, что такое модельная мама, я никогда не слышал об этом. Предположительно эта библиотека.   -  person Daniel Roseman    schedule 29.07.2014


Ответы (1)


Вы можете сделать это:

from model_mommy.recipe import Recipe, related

aardvark_profile = Recipe(Profile, is_aardvark=True)
aardvark_user = Recipe(User, profile_set=related('aardvark_profile'))

Надеюсь, это помогло

[1] http://model-mommy.readthedocs.org/en/latest/recipes.html#recipes-with-foreign-keys

person Vanderson Mota    schedule 05.08.2014
comment
Это работает блестяще. Большое спасибо за вашу помощь и за очень полезную модель model_mommy. - person Ludo; 06.08.2014