expense_item.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from typing import Optional, List
  2. from pydantic import BaseModel, ConfigDict
  3. from pydantic.alias_generators import to_camel
  4. class ExpenseItemCreate(BaseModel):
  5. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  6. parent_id: int = 0
  7. item_name: str
  8. item_code: str
  9. level: int = 1
  10. sort_order: int = 0
  11. status: int = 1
  12. remark: Optional[str] = None
  13. class ExpenseItemUpdate(BaseModel):
  14. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  15. parent_id: Optional[int] = None
  16. item_name: Optional[str] = None
  17. item_code: Optional[str] = None
  18. level: Optional[int] = None
  19. sort_order: Optional[int] = None
  20. status: Optional[int] = None
  21. remark: Optional[str] = None
  22. class ExpenseItemOut(BaseModel):
  23. model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
  24. id: int
  25. parent_id: int
  26. item_name: str
  27. item_code: str
  28. level: int
  29. sort_order: int
  30. status: int
  31. remark: Optional[str] = None
  32. child_count: int = 0
  33. children: Optional[List["ExpenseItemOut"]] = None
  34. class ExpenseItemTreeOut(ExpenseItemOut):
  35. pass
  36. ExpenseItemOut.model_rebuild()