gpt4 book ai didi

Django 模型中的 Python factory_boy 库 m2m?

转载 作者:太空狗 更新时间:2023-10-29 18:19:31 29 4
gpt4 key购买 nike

我目前正在使用 factory_boy 在我的测试中创建固定装置。Factory_boy 文档只提到了 SubFactory,它可以像模型中的 ForeignKey 字段一样工作。但是,ManyToMany 关联上没有任何内容。如果我有以下 Post 模型,我将如何为它创建一个工厂?

class Post(models.Model):
title = models.CharField(max_length=100)
tags = models.ManyToManyField('tags.Tag')

class PostFactory(factory.Factory):
FACTORY_FOR = Post

title = 'My title'
tags = ???

最佳答案

post_generation hook呢? - 我假设您使用更新版本的 factory_boy

import random
import factory

class PostFactory(factory.Factory):
FACTORY_FOR = Post
title = factory.Sequence(lambda n: "This is test title number" + n)
@factory.post_generation(extract_prefix='tags')
def add_tags(self, create, extracted, **kwargs):
# allow something like PostFactory(tags = Tag.objects.filter())
if extracted and type(extracted) == type(Tag.objects.all()):
self.tags = extracted
self.save()
else:
if Tag.objects.all().count() < 5:
TagFactory.create_batch(5, **kwargs)
for tag in Tag.objects.all().order_by('?')[:random.randint(1, 5)]:
self.tags.add(tag)

请注意,您可以使用 PostFactory(tags__field = 'some fancy default text'),但我建议使用序列创建良好的 TagFactory ...

您应该能够绑定(bind) PostFactory(tags = Tag.objects.filter()) 但这部分未经过测试...

关于Django 模型中的 Python factory_boy 库 m2m?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283544/

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