• 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管理迁移时会执行相应的迁移文件从而可以实现添加一个默认值。

  • 相关阅读:
    dubbo-详解海量定时任务实现机制
    flask实现python方法转换服务
    Thymeleaf 多个选项卡如何分页?亲后端没有思路
    JVM-GC-常用调优命令和GC参数
    [vue3] 富文本
    数说故事与暨南大学达成全面战略合作,开启协同新篇章
    springboot云农门户产品中心子系统
    RTT学习笔记12-串口外设和串口驱动框架
    01——golang简介
    潮玩游戏潮玩宇宙大逃杀游戏
  • 原文地址:https://blog.csdn.net/qq_41866851/article/details/126097518