Skip to main content

Serializer

Derive Macro Serializer 

Source
#[derive(Serializer)]
{
    // Attributes available to this derive:
    #[serializer]
}
Expand description

Derive rustango::serializer::ModelSerializer for a struct. (intra-doc link disabled — the macro crate doesn’t depend on rustango itself, so rustdoc can’t resolve the path.)

§Container attribute (required)

#[serializer(model = TypeName)] — the Model type this serializer maps from.

§Field attributes

  • #[serializer(read_only)] — mapped from model; included in JSON output; excluded from writable_fields()
  • #[serializer(write_only)]Default::default() in from_model; excluded from JSON output; included in writable_fields()
  • #[serializer(source = "field_name")] — reads from model.field_name instead of model.<field_ident>
  • #[serializer(skip)]Default::default() in from_model; included in JSON output; excluded from writable_fields() (user sets manually)
  • #[serializer(method = "fn_name")] — DRF SerializerMethodField: calls Self::fn_name(&model) for the field value; excluded from writable_fields()
  • #[serializer(nested)] / nested(strict) — auto-resolves nested serializer from a loaded ForeignKey; excluded from writable_fields()
  • #[serializer(many = ChildSerializer)] — collection of nested serializers; populated via macro-emitted set_<field>(&[Child::Model]); excluded from writable_fields()
  • #[serializer(slug = "name")] — DRF SlugRelatedField: clones model.<source>.value()?.name; excluded from writable_fields() (v0.44)
  • #[serializer(validate = "fn_name")] — per-field validator surfaced by Self::validate(&self)

The macro also emits a custom impl serde::Serialize — do not also #[derive(Serialize)].