簡體   English   中英

如何編寫一個驗證器來檢查一條記錄是否只有一個字段 int=1 ?

[英]How do I write a validator that checks whether a record has only a single field with int=1 among several?

如何編寫一個驗證器來檢查記錄是否具有單個操作?

我嘗試了以下

class MouseAction(SQLModel):
    user_id: int = Field(foreign_key=user.id)

    blur: int = Field(default=0)
    focus: int = Field(default=0)
    copy_: int = Field(alias='copy', default=0)
    paste: int = Field(default=0)
    left_click: int = Field(default=0)
    right_click: int = Field(default=0)
    double_click: int = Field(default=0)

    @validator('blur', 'focus', 'copy_', 'paste', 'left_click', 'right_click', 'double_click')
    def check_has_action(cls, v, values, **kwargs):
        if sum(values) > 1:
            raise ValueError('Only a single action is allowed per record')
        elif sum(values) < 1:
            raise ValueError('Record must have an action/ event')
        return values

考慮改用enum

import enum

from sqlmodel import Column, Enum, Field, SQLModel


class MouseActionType(enum.Enum):
    BLUR = "blur"
    FOCUS = "focus"
    COPY = "copy"
    PASTE = "paste"
    LEFT_CLICK = "left_click"
    RIGHT_CLICK = "right_click"
    DOUBLE_CLICK = "double_click"


class MouseAction(SQLModel):
    user_id: int = Field(foreign_key="user.id")
    mouse_action_type: MouseActionType = Field(sa_column=Column(Enum(MouseActionType)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM