• postgresql数据库结合django设置日期时间默认当前时间


    使用Django模型来创建PostgreSQL-DB。创建时间字段设置datetime类型,在其中设置当前时间作为默认值。但是,当在Django之外检查数据库时,默认的时间戳并没有出现。因为,django设置的日期时间默认值是针对ORM模型的,而不是直接对应的数据库,无论我们设djangomodel层中把创建时间的字段类型默认值设置成auto_now_add=True或default=timezone.now都是不起作用的,如果postgresql不使用ORM模型来进行数据的插入或查询是不起作用的,比如GraphQL查询,它是数据库层面的查询,不管是创建、修改或者查询,数据库中创建时间的字段是没有默认值的,所以插入数据的时候创建时间是没有默认值的,但我们的数据库表是通过django的model层创建生成的,这种情况下我们需要通过一些特殊的方式进行解决。

    先创建一个空的数据迁移文件并手动更改表。使用以下方法初始化数据迁移:

    python manage.py makemigrations --empty app_name
    
    • 1

    更改生成的文件并使用以下命令指定默认值:

    # Generated by Django 3.2.11 on 2022-08-01 10:48
    from django.db import migrations
    
    class Migration(migrations.Migration):
    
        dependencies = [
            ('app_name', 'migration_name'),
        ]
    
        operations = [
            migrations.RunSQL(
                'ALTER TABLE table_name ALTER COLUMN created_at SET DEFAULT CURRENT_TIMESTAMP';
            )
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这样做的好处是Django管理迁移时会执行相应的迁移文件从而可以实现添加一个默认值。

  • 相关阅读:
    最新版k8s 1.25版本安装
    MySQL索引
    【Python机器学习】零基础掌握IsolationForest集成学习
    第三十六回:BottomeSheet Widget
    渗透测试-安服面试点总结
    GB/T28181协议介绍
    ADG5412FBRUZ-RL7应用 双电源模拟开关和多路复用器IC
    在Linux中使用shell指令完成文件打包、压缩、解压缩
    查找算法思想及代码——C语言
    Linux 内核 LTS 期限将从 6 年恢复至 2 年
  • 原文地址:https://blog.csdn.net/qq_41866851/article/details/126097518