# pydantic.errors.PydanticUserError: @computed_field should be used with @property. This error is raised when a @computed_field is applied to a non-property.

- **ID:** `python/pydantic-computed-field-serialization`
- **Domain:** python
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

Decorator order was reversed: @computed_field placed above a plain method without @property, or @property placed above @computed_field.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 2.x | active | — | — |

## Workarounds

1. **** (95% success)
   ```
   from pydantic import BaseModel, computed_field
class M(BaseModel):
    a: int
    b: int
    @computed_field
    @property
    def total(self) -> int:
        return self.a + self.b
   ```
2. **** (85% success)
   ```
   from pydantic import model_serializer
class M(BaseModel):
    a: int
    @model_serializer
    def ser(self):
        return {'a': self.a, 'double': self.a * 2}
   ```

## Dead Ends

- **** — Field no longer appears in model_dump / JSON output. (60% fail)
- **** — staticmethod returns a descriptor; validation raises because it is not a property. (55% fail)
- **** — Recomputes only at construction; stale if inputs mutate. (50% fail)
