gpt4 book ai didi

django - 需要在 pytest 工厂中覆盖 django auto_now_add

转载 作者:行者123 更新时间:2023-12-04 16:45:40 25 4
gpt4 key购买 nike

由于 auto_now_add 在 Django 模型中 sent_at 不在 pytest 工厂工作。需要为 pytest 工厂覆盖 sent_at

class ABC(models.Model):
x = models.ForeignKey(X, on_delete=models.CASCADE, related_name="xx")
y = models.ForeignKey(Y, on_delete=models.CASCADE, related_name="yy")
sent_at = models.DateTimeField(auto_now_add=True)


class ABCFactory(factory.django.DjangoModelFactory):
x = factory.SubFactory(XFactory)
y = factory.SubFactory(YFactory)
sent_at = timezone.now() - timezone.timedelta(seconds=40)

最佳答案

也许可以查看 factory_boy github 中发布的此解决方案:
https://github.com/FactoryBoy/factory_boy/issues/102
简而言之,有2个解决方案:

  • 删除 auto_now_add在您的模型字段中,而是使用 default=timezone.now .它将非常相似,除了该字段在管理员中不会是只读的。但现在您可以轻松覆盖/更新它
  • 覆盖 _create方法,以便它设置字段并在最初创建实例后重新保存实例
  • 关于django - 需要在 pytest 工厂中覆盖 django auto_now_add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68729916/

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