django - 如何在 DjangoModelFactory 中将_sequence 重置为默认 id 字段序列
问题描述
像这样的工厂:
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
默认情况下,模型的id
字段将从 1 开始。我希望 id 以更高的数字开始,例如 50000。
除非您在工厂中添加此行,否则使用UserFactory.reset_sequence(50000)
不起作用
id = factory.Sequence(lambda n: n)
我有很多依赖于默认 id 增量行为的测试,所以这种方式是行不通的。
解决方案
我能找到的唯一解决方法是创建一个User
从 49999 开始的对象
if not UserFactory.objects.filter(id=49999).exists():
UserFactory(49999)
现在你可以做
print(UserFactory().id)
>>> 50000
现在,如果您的模型的 id 是一个自动字段,您可能必须更改底层数据库模式,或者求助于该reset_sequence
方法。如何让 Django AutoFields 以更高的数字开始
推荐阅读
- android - 如何在我的 dnd 字符表项目中动态过滤子种族的公开下拉菜单?
- idris - 为什么 Idris 2 中的 cong 不进行类型检查
- node.js - nodejs/express 和 puppeteer 用我的 puppeteer 检测代码在 html 文件内完成
- javascript - Axios 拦截器 setTimeout() 在开发中工作,但在编译和部署后不工作
- scala - Spark 保存和读取 Array[Byte] 类型
- python - 为什么在 python 中使用递归时会发生这种情况?
- c# - 将 CSV 文件复制到本地 SQL Server -BCP 实用程序 C# .NET Core
- r - 如何通过包含日期范围的变量订购 ggplot x 轴?
- haskell - 解析错误(可能是不正确的缩进或不匹配的括号)。我正在制作一个函数,它可以用 1 去除 multiplicatoin 并用 1 和 0 相加
- python-3.x - Nuitka:将 PYD 集成到 .py 和 .exe 中