12345678910111213141516171819202122232425262728293031323334353637383940 |
- from pydantic import BaseModel, validator
- 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
- @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
- class Config:
- extra = "allow" # 允许额外的字段
|