我有两个管理员和角色表,与第三个表分配(多对多关系)连接,字段为role_id,administrator_id和一些额外的字段created_at和updated_at,我想自动填充:
assignments = db.Table('assignments',db.Column('role_id',db.Integer,db.ForeignKey('roles.id')),db.Column('administrator_id',db.ForeignKey('administrators.id')),db.Column('created_at',db.DateTime,server_default=db.func.Now()),db.Column('updated_at',server_default=db.func.Now(),onupdate=db.func.Now()),db.ForeignKeyConstraint(['administrator_id'],['administrators.id']),db.ForeignKeyConstraint(['role_id'],['roles.id']) ) class Administrator(db.Model,UserMixin): __tablename__ = 'administrators' id = Column(Integer,primary_key=True,server_default=text("nextval('administrators_id_seq'::regclass)")) email = Column(String(255),nullable=False,unique=True,server_default=text("''::character varying")) name = Column(String(255)) surname = Column(String(255)) roles = db.relationship('Role',secondary=assignments,backref=db.backref('users',lazy='dynamic')) class Role(db.Model): __tablename__ = 'roles' id = Column(Integer,server_default=text("nextval('roles_id_seq'::regclass)")) name = Column(String(255))
admin.roles = [role1] db.session.add(admin) db.session.commit()
它打破了以下错误:
IntegrityError: (psycopg2.IntegrityError) null value in column "created_at" violates not-null constraint DETAIL: Failing row contains (1265,19,3,null,null). [sql: 'INSERT INTO assignments (role_id,administrator_id) VALUES (%(role_id)s,%(administrator_id)s)'] [parameters: {'administrator_id': 19,'role_id': 3}]
有没有办法在赋值表中为created_at和updated_at字段设置默认值?