# PydanticUserError: 'email' 上的 @field_validator 需要 classmethod，但装饰器被应用于普通方法。请在 @field_validator 下方添加 @classmethod。

- **ID:** `python/pydantic-validator-not-classmethod`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

在 Pydantic v2 中，field_validator 必须装饰 classmethod；省略 @classmethod 会在类定义时引发 PydanticUserError。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 2.x | active | — | — |

## 解决方案

1. **** (99% 成功率)
   ```
   from pydantic import field_validator
class User(BaseModel):
    email: str
    @field_validator('email')
    @classmethod
    def check_email(cls, v):
        return v.lower()
   ```
2. **** (94% 成功率)
   ```
   from typing import Annotated
from pydantic import AfterValidator
Email = Annotated[str, AfterValidator(lambda v: v.lower())]
   ```

## 无效尝试

- **** — field_validator explicitly checks for classmethod; staticmethod is rejected. (95% 失败率)
- **** — Validators must be defined inside the model class to be registered. (90% 失败率)
