gpt4 book ai didi

python - post_generation with factory boy 在我想要列表时给出 ManyRelatedManager

转载 作者:行者123 更新时间:2023-11-28 22:47:11 31 4
gpt4 key购买 nike

我显然是个笨蛋,我会在一开始就承认这一点。我正在使用以下工厂

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)

当我用 PDS=DataSheetFactory(product_contributors= (<tuple of users>)) 创建它时我期待该领域的用户列表 product_contributors ,但我得到一个 django.db.models.fields.related.ManyRelatedManager相反,所以测试将不起作用。当我遵循“常用食谱”时,我应该做什么 here

澄清一下,我问的是如何使用 factory boy 在模型的多对多字段中创建用户列表。我尝试了文档中的建议,得到了 ManyRelatedManager ,不是列表,所以 factory_boy生成不可用的实例。

最佳答案

如上所述,您的问题来自于我对 factory_boy 施加的魔法:@post_generation 中的 self 不是工厂实例,而是实际的实例刚刚生成的对象。

因此,product_contributors 确实是 Django 的“RelatedManager”的实例,您可以通过以下方式访问项目:

datasheet = DataSheetFactory()
contributors = datasheet.product_contributors.all()

关于python - post_generation with factory boy 在我想要列表时给出 ManyRelatedManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26607571/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com