gpt4 book ai didi

mysql - Django bug - auto_now_add 字段为 Null

转载 作者:行者123 更新时间:2023-11-29 07:44:30 26 4
gpt4 key购买 nike

我的模型有一个自定义主键和一个带有 auto_now_add = True 的 DateTimefield:

slug = models.CharField(max_length=5, primary_key=True)
created_on = models.DateTimeField(auto_now_add=True)

我注意到数百个对象中的少数对象对于“created_on”具有 Null 值,即使该字段不允许 Null 值。有什么想法这怎么可能吗?

此 key 是通过此自定义保存覆盖随机生成的:

def save(self, *args, **kwargs):
if self.slug == '':
self.slug = generate_random_slug()
while True:
try:
super(MyClass, self).save(*args, **kwargs)
break
except IntegrityError:
self.slug = generate_random_slug()

最佳答案

如果您尝试保存一个对象,该对象的一个​​字段带有 primary_key=True 字段,另一个字段带有 auto_now_add=True 字段,而数据库中已经存在一个具有相同字段的对象主键值,它会导致数据库抛出错误,或者可能只是将其设置为空。看起来你的 slug 很可能会发生碰撞(看起来它有 5 个字符长,这很容易造成碰撞)。您可能希望使用碰撞概率较低的 generate_random_slug。像 uuid 这样的东西可能会有用。

这是一个假设,需要查看更多代码来确认。

关于mysql - Django bug - auto_now_add 字段为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28226129/

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