| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from pydantic import BaseModel
- from pydantic.functional_validators import field_validator
- from pydantic import ConfigDict
- from typing import Dict, Any, Optional, Union
- class RuleField(BaseModel):
- """
- 规则字段模型,用于验证单个规则字段
- """
- min: Union[int, float] = 0
- max: Union[int, float] = 0
- # @validator('max')
- # def validate_min_max(cls, v, values, field):
- # if 'min' in values and v != 0 and values['min'] > v:
- # raise ValueError('min value cannot be greater than max value')
- # return v
- class RuleModel(BaseModel):
- """
- 规则模型,用于验证规则字典
- """
- period: Optional[RuleField] = None
- duration: Optional[RuleField] = None
- play_cnt: Optional[RuleField] = None
- like_cnt: Optional[RuleField] = None
- comment_cnt: Optional[RuleField] = None
- share_cnt: Optional[RuleField] = None
- videos_cnt: Optional[RuleField] = None
- width: Optional[RuleField] = None
- height: Optional[RuleField] = None
- @field_validator('*')
- def validate_rule_fields(cls, v):
- if v is not None and not isinstance(v, RuleField):
- raise ValueError('Rule fields must be of type RuleField')
- return v
- model_config = ConfigDict(extra='allow') # 使用V2兼容的方式允许额外字段
|