class M(Model): id: int name: str = Field(primary_field=True)
class M(Model): alternate_id: int = Field(primary_field=True) f: int
class M(Model): field: str = Field(default_factory=lambda: "hello") class Config: parse_doc_with_default_factories = True
class Base(Model): a: int = Field(key_name="referenced") referenced: Referenced = Reference()
class Base(Model): a: int = Field(key_name="a$b")
class A(EmbeddedModel): f: int = Field(primary_field=True)
class M(Model): field: E = Field(primary_field=True)
class M(Model): field: str = Field(default_factory=lambda: "hi") # pragma: no cover
def test_field_defined_as_primary_key_and_custom_name(): with pytest.raises( ValueError, match="cannot specify a primary field with a custom key_name"): Field(primary_field=True, key_name="not _id")
class M(Model): field: int = Field(key_name="alternate_name")
class M(Model): field: str = Field("hi")
def test_field_defined_as_primary_key_default_name(): f = Field(primary_field=True) assert f.key_name == "_id"
class M(Model): field: str = Field(default_factory=lambda: "hi")
class ModelWithDate(Model): field: datetime = Field(default_factory=datetime.utcnow)
class M(Model): id: int number: int = Field(primary_key=True)
class M(Model): field: str = Field(default_factory=lambda: "hi") # pragma: no cover class Config: parse_doc_with_default_factories = True
class M(Model): a: int = Field(primary_field=True) b: int = Field(primary_field=True)
class Base(Model): b: int = Field(key_name="a.b")
class M(Model): field: E = Field(E(), key_name="hello")
class M(Model): f: int = Field(default=3)
class M(Model): a: int b: int = Field(key_name="a")
class M(Model): f: Optional[int] = Field("a")
class Base(Model): a: int = Field(key_name="referenced") b: int = Field(key_name="referenced")
class M(Model): f: Optional[int] = Field(3, gt=5)
class M(Model): field: str = Field(key_name="custom")
class M(Model): f: Optional[str] = Field("hello world", key_name="my_field")
class M(Model): f: int = Field(gt=0)
class M(Model): field: str = Field(default="hello world")