模型妈咪配方与反向FK



我在Django测试中使用model_mommy来创建对象。我在创建具有反向FK的模型时遇到了麻烦。我可以做相反的方式作为一个解决方案,但是,虽然它的工作,它看起来不正确,所以我想知道我是否可以做另一种方式?

假设我有两个模型,User和Profile,通过一个从Profile到User的FK(不是一对一的,它只是一个FK)相关联。Profile模型有一个bool属性叫做is_aardvark。

在model mommy中,我可以创建这样的食谱:

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

然后我可以在我的测试中创建一个具有aardvark配置文件的用户,如下所示:

user = mommy.create_recipe(aardvark_profile).user

这似乎不对,因为我正在通过aardvark_profile recipe创建一个用户。理想情况下,我想通过某种User recipe创建一个User(也许将来我会有一些其他的模型FKd到User,所以上面的方法不起作用)。

我试过下面的方法,但都不起作用:

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

这可能吗?什么好主意吗?如果其他方法都失败了,我可以创建一个辅助方法来为我做这件事。

谢谢!

你可以这样做:

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

最新更新