gpt4 book ai didi

python - 工厂男 child 工厂超过 'self'

转载 作者:太空狗 更新时间:2023-10-30 00:48:56 26 4
gpt4 key购买 nike

有谁知道如何基于这个models.py在factoryboy中创建工厂

class Halte(models.Model):

koppel_halte1 = models.ForeignKey('self',
related_name='koppel_halteA',
verbose_name="Koppel Halte",
help_text="geef hier een gekoppelde halte aan",
null=True, blank=True)

koppel_halte2 = models.ForeignKey('self',
related_name='koppel_halteB',
verbose_name="Koppel Halte",
help_text="geef hier een gekoppelde halte aan",
null=True, blank=True)

注意到“ self ”了吗? (是的,这种关系是必要的。)

我已经在 FactoryBoy(SubFactory、RelatedFactory、SelfAttribute、PostGeneration)中尝试了几件事,但我无法让它工作。

factory.py 中的尝试之一

class HalteFactoryA(factory.DjangoModelFactory):
class Meta:
model = models.Halte


class HalteFactoryB(factory.DjangoModelFactory):
class Meta:
model = models.Halte


class HalteFactory(factory.DjangoModelFactory):
class Meta:
model = models.Halte
# todo: how to do this?? (see models.Halte)
koppel_halte1 = factory.RelatedFactory(HalteFactoryA)
koppel_halte2 = factory.RelatedFactory(HalteFactoryB)

有什么建议吗?

谢谢。

最佳答案

@bakkal 基本上是正确的,但一个重要的缺失因素是必须指定目标递归深度,如本期所述: https://github.com/rbarrois/factory_boy/issues/173

# myproj/myapp/factories.py
class MyModelFactory(factory.Factory):
class Meta:
model = models.MyModel
parent = factory.SubFactory('myapp.factories.MyModelFactory')

然后需要添加递归最大深度,否则会出现达到无限深度错误(正如@Sjoerd van Poelgeest 在评论中指出的那样):

m = MyModelFactory(parent__parent__parent__parent=None)

在这种情况下,我们允许创建深度为 3 的对象,最后一个对象的父对象为空。

关于python - 工厂男 child 工厂超过 'self',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227843/

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