django - 为什么 Django auto_now_add 在插入或更新时失败且不为空
问题描述
我正在尝试实现一个数据仓库。所以django系统会定期查询一个api来更新数据库。我使用客户端 ID 作为主键,这可能是问题,但是当我保存时,我显然希望它创建或更新。
无论我做什么,我都会收到这个错误!
django.db.utils.IntegrityError:“创建”列中的空值违反非空约束
所以最初我的模型是这样的:
class PersonalTaxClient(models.Model):
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
invoice_client = models.ForeignKey(InvoiceClient, blank=True, null=True, on_delete=models.PROTECT)
client_name = models.CharField(max_length=100)
email = models.CharField(max_length=100)
然后我尝试了:
class PersonalTaxClient(models.Model):
created = models.DateTimeField(editable=False)
updated = models.DateTimeField()
client_code = models.CharField(max_length=20, primary_key=True)
invoice_client = models.ForeignKey(InvoiceClient, blank=True, null=True, on_delete=models.PROTECT)
client_name = models.CharField(max_length=100)
email = models.CharField(max_length=100)
# history = HistoricalRecords()
def save(self, *args, **kwargs):
''' On save, update timestamps '''
print(timezone.now())
if not self.client_code:
self.created = timezone.now()
self.modified = timezone.now()
return super(PersonalTaxClient, self).save(*args, **kwargs)
并尝试像这样更新:
>>> from sbsite.models import PersonalTaxClient
>>> p = PersonalTaxClient(client_code="HHH001", client_name="Bob")
>>> p.save()
我犯了同样的错误。我已经阅读了大约 20 个其他 SO 页面,但我没有更聪明........!
解决方案
推荐阅读
- swift - SwiftUI:使用 TabView 和 watchOS 基于状态强制焦点
- formula - Process Builder 电子邮件警报未触发
- sql - 在分区中使用 where 子句
- javascript - 如何从字符串中提取数字并替换它?
- amazon-web-services - 如何在 AWS Route 53 中设置 clientDeleteProhibited、clientRenewProhibited 和 clientUpdateProhibited EPP 状态代码?
- javascript - 这棵树是有效的二叉搜索树吗 [1, 7, 11, 17, 21, 29, 74, 89, 91, 101, 132, 157]
- ios - 当应用程序进入后台并在 Swift 中以前台模式恢复时暂停动画
- python - Python docx 提取字体名称和大小
- jenkins - 如何在 Jenkinsfile 声明式管道中动态更改阶段名称?
- python - 将不同的值与其他列的组合相乘到 pandas 列