Bulk ActiveModel field setting

Imagine the situation where one has the table:

#![allow(unused)]
fn main() {
TableName {
    id: i32,
    field1: T,
    field2: T,
    ...
    fieldN: T,
}
}

To create an ActiveModel of this table, one can painstakingly set each field to ActiveValue<T>::NotSet:

#![allow(unused)]
fn main() {
let new_thing = table_name::ActiveModel {
    id: ActiveValue::NotSet,
    field1: ActiveValue::NotSet,
    field2: ActiveValue::NotSet,
    // ...
    fieldN: ActiveValue::NotSet,
};
}

or implement the Default trait which I will not show here.

However, I shall enlighten you with a trick within SeaORM - creating the model with JSON:

#![allow(unused)]
fn main() {
let json = json!({ "fieldX": value });

let new_thing = table_name::ActiveModel::from_json(json)?;
}

Where new_thing will evaluate to fieldX being ActiveValue<T>::Set and all other fields set to ActiveValue<T>::NotSet automatically.

Setting of field values can also be performed on existing instances of ActiveModel with ActiveModelTrait::set_from_json. Note that this method will not change the primary key value if it is set.