2

我正在使用带有 Django 测试的model_mommy来创建对象。我在创建具有反向 FK 的模型时遇到问题。作为一种解决方法,我可以用相反的方式来做,但是虽然它有效,但它看起来并不正确,所以我想知道我是否可以反过来做?

假设我有两个模型,用户和配置文件,通过从配置文件到用户的 FK 相关联(它不是一对一的,它只是一个 FK)。Profile 模型有一个布尔属性调用 is_aardvark。

在模型妈妈中,我可以创建如下食谱:

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 配方创建用户。理想情况下,我想通过某种用户配方创建一个用户(也许将来我会有一些其他模型 FKd 给用户,所以上面的方法不起作用)。

我已经尝试过以下方法,但不起作用:

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

这甚至可能吗?有任何想法吗?如果一切都失败了,我可以创建一个辅助方法来为我做这件事。

谢谢!

4

1 回答 1

3

你可以这样做:

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

于 2014-08-05T17:59:33.967 回答