콘텐츠로 이동

릴리스 노트

0.20.1

✨ 주요 변경 사항

  • 이것은 Pydantic v2를 지원하는 Ormar의 첫 번째 비 베타 릴리스입니다. 0.20.0 릴리스 노트 및 https://collerek.github.io/ormar/0.20.0b1/migration/

🐛 수리

  • 선택_lated 및 프리페치_lated#906을 사용할 때 동일한 대상 모델 병합 수정
  • PK 전용 모델과 관련된 저장 문제 해결#812
  • 동일한 관계를 여러 번 추가하면 관계 캐시 #1335가 손상됩니다.

✨ 특징

  • @cmflynn#1276을 통해 외부 키 인덱스 추가 허용

💬기타

  • @ Chaingz가 문서를 수정했습니다. 감사합니다!

0.20.0

✨ 주요 변경 사항

  • 오마르, 모델 구성

    이제 각 ormar 모델에는 메타 클래스를 정의하는 대신 OrmarConfig 클래스의 인스턴스인 ormar_config 매개 변수가 필요합니다. 속성의 이름은 ormar_config이고 config 클래스의 인스턴스여야 합니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    데이터베이스 가져오기
    오마르 가져오기
    sqlalchemy 가져오기
    
    데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite")
    메타데이터 = sqlalchemy. 메타데이터()
    
    # ormar <0.20
    클래스 앨범(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
            테이블 이름 = "앨범"
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        즐겨찾기: bool = ormar. 부울(기본값 = 거짓)
    
    # ormar > = 0.20
    클래스 앨범 V20(ormar. 모델):
        ormar_config = ormar. OrmarConfig (
            데이터베이스 = 데이터베이스,
            메타데이터 = 메타데이터,
            테이블 이름 = "s_v20"
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        즐겨찾기: bool = ormar. 부울(기본값 = 거짓)
    
  • OrmarConfig api/매개 변수

    Ormar_config는 메타 클래스에서 제공하는 동일한 설정 집합을 표시합니다. 즉, 다음 매개 변수 중 하나로 구성을 초기화할 수 있습니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    메타데이터: 옵션 [sqlalchemy. 메타데이터]
    데이터베이스: 옵션 [데이터베이스. 데이터베이스]
    엔진: 옵션 [sqlalChemy.. 엔진]
    테이블 이름: 옵션 [str]
    order_by: 옵션 [목록 [str]]
    추상: 볼
    __field: 옵션 [목록 [str]]
    queryset_클래스: [Queryset]을 입력합니다.
    추가: 추가
    제약 조건: 선택 사항 [목록 [ColumnCollectionConstraint]]
    
  • BaseMeta 동등성 - 모범 사례

    코드 중복을 줄이고 개발을 단순화하기 위해서는 기본 구성을 만들고 각 모델의 사본을 제공하는 것이 좋습니다. OrmarConfig는 이를 위한 편리한 복제 방법을 제공합니다.

    복사 메서드는 OrmarConfig init와 동일한 인수를 사용하므로 필요에 따라 재정의할 수 있지만 기본적으로 테이블 이름, 순서 _by 및 기본적으로 지워지는 제약 조건을 제외하고 기존 속성을 반환합니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    데이터베이스 가져오기
    오마르 가져오기
    sqlalchemy 가져오기
    
    base_ormar_config = ormar. OrmarConfig (
        데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite"),
        메타데이터 = sqlalchemy. 메타데이터()
    )
    
    클래스 앨범 V20(ormar. 모델):
        ormar_config = base_ormar_config 사본(
            테이블 이름 = "s_v20"
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
    
    클래스 트랙 V20(ormar. 모델):
        ormar_config = base_ormar_config 사본(
            테이블 이름 = "_v20"
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
    
  • 옵션 필드 매개변수는 더 이상 지원되지 않습니다.

    버전 0.20 이전에 기존 ormar 필드에 옵션 인수를 제공하여 허용 가능한 값을 제한할 수 있습니다. 이 기능은 제거되었으며 ormar를 사용해야 합니다. 이를 위해 설계된 열거형 필드. 데이터베이스 필드 유형(즉, 정수 필드)을 보존하려면 언제든지 사용자 지정 검증기를 작성할 수 있습니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    데이터베이스 가져오기
    오마르 가져오기
    sqlalchemy 가져오기
    
    데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite")
    메타데이터 = sqlalchemy. 메타데이터()
    
    # ormar <0.20
    클래스 아티스트(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        국가: str = ormar. 문자열(기본값 = 거짓, max_long = 50, 선택 = ["영국", "미국", "베트남", "콜롬비아"])
    
    # ormar > = 0.20
    열거형에서 열거형 가져오기
    
    클래스 국가(str, Enum):
        영국 = "영국"
        미국 = "미국"
        베트남 = "베트남"
        콜롬비아 = "콜롬비아"
    
    클래스 아티스트 V20(ormar. 모델):
        ormar_config = ormar. OrmarConfig (
            데이터베이스 = 데이터베이스,
            메타데이터 = 메타데이터,
            테이블 이름 = "arts_v20"
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        국가: 국가 = ormar. 에넘(enum_클래스 = 국가)
    
  • Pydantic_만 더 이상 필드 매개 변수를 지원하지 않습니다.

    pydantic_ 전용 필드는 v 0.20에서 더 이상 사용되지 않고 제거되었습니다. Ormar를 사용하면 pydantic 필드를 일반 pydantic 모델처럼 정의할 수 있습니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    데이터베이스 가져오기
    오마르 가져오기
    sqlalchemy 가져오기
    
    데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite")
    메타데이터 = sqlalchemy. 메타데이터()
    
    # ormar <0.20
    클래스 접시(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
            테이블 이름 = "접시"
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        요리사: str = ormar. 문자열(max_long = 40, pydantic_Only = 참, 기본값 = "sam")
    
    # ormar > = 0.20
    클래스 DishV20(ormar. 모델):
        ormar_config = ormar. OrmarConfig (
            데이터베이스 = 데이터베이스,
            메타데이터 = 메타데이터,
            테이블 이름 = "s_v20"
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        요리사: str = "sam" # 이것은 일반 피단트 필드입니다.
    
  • 더 이상 속성 _field 데코레이터를 지원하지 않습니다.

    속성 _field 데코레이터는 모델의 사전/직렬화된 JSON 표현에 포함된 계산된 필드를 전달하는 방법을 제공하는 데 사용됩니다. Pydantic 2. X 버전은 이러한 가능성을 도입했으므로 이제 Pydantic 네이티브 버전으로 전환해야 합니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    데이터베이스 가져오기
    오마르 가져오기
    sqlalchemy 가져오기
    피단틱 가져오기
    
    데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite")
    메타데이터 = sqlalchemy. 메타데이터()
    
    # ormar <0.20
    클래스 직원(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
    
        ID: int = ormar. 정수(prial_key = 참)
        첫 번째 이름: str = ormar. 문자열(max_long = 100)
        성: str = ormar. 문자열(max_long = 100)
    
        @Ormar.ty_field ()
        Def full_name (자체) -> str:
            f "{self.first_name}{self.last_name}"를 반환합니다.
    
    # ormar > = 0.20
    클래스 직원 V20(ormar. 모델):
        ormar_config = ormar. OrmarConfig (
            데이터베이스 = 데이터베이스,
            메타데이터 = 메타데이터,
        )
    
        ID: int = ormar. 정수(prial_key = 참)
        첫 번째 이름: str = ormar. 문자열(max_long = 100)
        성: str = ormar. 문자열(max_long = 100)
    
        @ Pydantic ted_field ()
        Def full_name (자체) -> str:
            f "{self.first_name}{self.last_name}"를 반환합니다.
    
  • 더 이상 사용되지 않는 방법

    아래에 나열된 모든 방법은 사용되지 않았으며 Ormar 버전 0.30에서 제거됩니다.

    • Dict()가 모델이 됩니다 _dump()

      데이터베이스 가져오기 오마르 가져오기 sqlalchemy 가져오기

      데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite") 메타데이터 = sqlalchemy. 메타데이터()

      클래스 앨범(ormar. 모델): ormar_config = ormar. OrmarConfig ( 데이터베이스 = 데이터베이스, 메타데이터 = 메타데이터, 테이블 이름 = "앨범" )

      1
      2
      3
      ID: int = ormar. 정수(prial_key = 참)
      이름: str = ormar. 문자열(max_long = 100)
      즐겨찾기: bool = ormar. 부울(기본값 = 거짓)
      

      앨범 = 앨범 (이름 = "달의 어두운 면")

      ormar <0.20

      al_dict = alum.dict ()

      ormar > = 0.20

      new_al_dict = alum.model_dump ()

    매개 변수는 동일하게 유지됩니다(예: 포함, 제외 등).

    • JSON()이 모델 _dump_json()이 됩니다.

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      데이터베이스 가져오기
      오마르 가져오기
      sqlalchemy 가져오기
      
      데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite")
      메타데이터 = sqlalchemy. 메타데이터()
      
      클래스 앨범(ormar. 모델):
          ormar_config = ormar. OrmarConfig (
              데이터베이스 = 데이터베이스,
              메타데이터 = 메타데이터,
              테이블 이름 = "앨범"
          )
      
          ID: int = ormar. 정수(prial_key = 참)
          이름: str = ormar. 문자열(max_long = 100)
          즐겨찾기: bool = ormar. 부울(기본값 = 거짓)
      
      앨범 = 앨범 (이름 = "달의 어두운 면")
      
      # ormar <0.20
      앨범_json = alum.json ()
      
      # ormar > = 0.20
      new_al_dict = album .model_dump_json ()
      

      매개 변수는 동일하게 유지됩니다(예: 포함, 제외 등).

    • 구성()이 모델 _ 구성()이 됩니다.

      데이터베이스 가져오기 오마르 가져오기 sqlalchemy 가져오기

      데이터베이스 = 데이터베이스. 데이터베이스("sqlite://db.sqlite") 메타데이터 = sqlalchemy. 메타데이터()

      클래스 앨범(ormar. 모델): ormar_config = ormar. OrmarConfig ( 데이터베이스 = 데이터베이스, 메타데이터 = 메타데이터, 테이블 이름 = "앨범" )

      1
      2
      3
      ID: int = ormar. 정수(prial_key = 참)
      이름: str = ormar. 문자열(max_long = 100)
      즐겨찾기: bool = ormar. 부울(기본값 = 거짓)
      

      Params = { "이름": "달의 어두운 면", "즐겨찾기": 사실, }

      ormar <0.20

      앨범 = 앨범. 구성 (** params)

      ormar > = 0.20

      앨범 = model_ (** params)

    구조에 대해 자세히 알아보려면 Pydantic 문서를 참조하십시오.

0.12.2

✨

  • FastAPI 지원을 최신 버전으로 업그레이드하십시오(0.97.0)
  • Python 3.11 #1110에 대한 지원 및 테스트 추가

0.12.1

✨

  • 모델 및 관련 모델의 재귀 로딩 및 캐싱으로 인해 로딩 모델의 성능이 크게 향상되었습니다. (@erichaydel - 감사합니다!) #853

💬내부 구조

  • 구현된 추세 변경의 성능 효과를 비교하는 벤치마크(다시 한 번 @erichaydel - 감사합니다!) #853

0.12.0

✨ 주요 변경 사항

  • Queryset.bulk_create가 이제 ModelList를 올립니다.빈 모델 목록에 오류가 있습니다(by @ponyailer - 감사합니다!) #853

✨

  • Model.up()는 이제 플래그 __force\를 처리합니다._저장__: bool, 기본 키 세트가 있는지 여부에 관계없이 삽입 모델을 업데이트할 수 있습니다. 이 플래그를 설정하면 각 업데이트 삽입 모델에 대해 두 개의 쿼리가 발생합니다. -> 모델이 존재하는지 확인하고 나중에 업데이트/삽입합니다. 889장

🐛

  • 생성자를 깨뜨린 빈 관계를 수정했습니다(@Abdeldjalil-H - 감사합니다!) #870
  • pks 세트(uuid 포함)로 모델을 저장하지 않는 저장 관련 문제 해결 #885
  • 제외 순서에 따라 잘못된 관계 제외 수정 #779
  • 속성 수정_필드가 올바르게 상속되지 않음#774

0.11.3

✨

  • 는 ForeignKey에서 업데이트 및 삭제 참조 작업을 기록하고 관계의 동작을 지정하는 참조 작업 열거를 제공합니다(@SepehrBazyar - 감사합니다!) #724
  • 모델 메타에서 지원되는 제약 조건에 확인란 추가(@SepehrBazyar - 감사합니다!) #729

🐛

  • 쿼리 결과를 0으로 제한하면 빈 목록이 반환됩니다(@SepehrBazyar - 감사합니다!) #766

다른 💬

  • 설명서에 다크 모드 추가(@SepehrBazyar - 감사합니다!) #717
  • aiomysql 종속성 업데이트 #778

0.11.2

🐛

  • 데이터베이스 드라이버를 복구해야 하며 선택 사항이어야 합니다.
  • Postgres#704의 제한 없이 제한 쿼리에서 부울 필드 문제 수정
  • OpenAPI#699에서 오류를 일으키는 스키마에 대한 enum_클래스 오버플로를 수정합니다.

0.11.1

🐛

  • Pydantic 1.9#685에 도입된 심층 복제 문제 해결

0.11.0

✨ 주요 변경 사항

  • Python 3.6에 대한 지원을 삭제합니다.
  • Queryset.get_or_create Now는 모델이 포함된 튜플과 모델이 생성되었는지 여부를 나타내는 부울을 반환합니다(@MojixCoder - 감사합니다!) #554
  • Queryset.카운트()는 이제 기본적으로 다른 상위 모델 행의 수를 계산합니다. 고유 = 거짓(@erichaydel - 감사합니다) #588을 설정하여 모든 행을 계산할 수 있습니다.

✨

  • 파이썬 3.10 지원 추가

🐛

  • 저장 및 대량 생성에서 일관성이 없는 JSON 필드 동작 수정
  • 최대 재귀 오류 수정 #580

0.10.25

✨

  • 는 모델에 queryset_클래스 옵션을 추가합니다. 메타, Queryset을 모델로 쉽게 교체할 수 있도록 합니다(@ponyailer - 감사합니다!) #538
  • 를 사용하면 추가 kwargs를 IndexCol로 전달할 수 있으며, 이 인덱스는 sqlalchemy 인덱스로 전달됩니다(@zevisert - 감사합니다) #575

🐛

  • JSON 필드에 대한 nullable 설정 수정 #529
  • 는 json 대신 orjson을 사용할 때 배치 작업에서 바이트/str 불일치를 수정합니다(by @ponyailer - 감사합니다!) #538

0.10.24

✨

  • 포스트 _bulk_ 신호 추가 (by @ponyailer - 감사합니다!) #524

🐛

  • pydantic ==1.9.0#502에 대한 고정 지원
  • 날짜 및 시간에 대한 시간대 문제 수정 #504
  • 쿼리 생성에서 리터럴 바인딩을 제거하여 Postgres 어레이 #/tophat/ormar-postgres-extensions/9 잠금 해제
  • JSON 필드의 배치 업데이트 수정 #519

다른 💬

  • 는 데이터베이스 실행_많은 차선책 구현을 우회하여 대량_생성 성능을 향상시킵니다. (@Mng-dev-ai 감사!) #520
  • 임팩트 분. 필수 데이터베이스 버전은 > = 5.4입니다.

0.10.23

✨

  • 열을 만들 때 댓글을 sqlalchemy에 전달하는 기능 추가 #485

🐛

  • 비어 있을 수 있는 큰 이진 필드 수정 #409
  • 오마르를 만드십시오. 모델 사용 가능 #413
  • 먼저 ()를 만들고 () 매개 변수 없이 사용자가 설정한 기본 모델의 순서를 존중하고 기본 키로 돌아갑니다(각각 asc 및 desc) #453
  • Postgress #455의 비별칭 조인 절에 대한 잘못된 참조 수정

0.10.22

🐛

  • 상위 ormar 모델을 설정할 때 상속되지 않는 검증자에 대한 핫 수정 #365

0.10.21

🐛

  • 는 입력을 검증하지 않고 모델 인스턴스를 구축하여 전체 프로세스 속도를 높일 수 있는 생성자 클래스 방법의 ormar 구현을 추가합니다(데이터가 이미 검증된 경우). #318
  • 는 get_pydantic#365를 사용하여 새로 생성된 pydanic 모델을 생성할 때 ormar 모델에서 필드 검증자를 "상속"하는 문제를 해결합니다.

0.10.20

✨

  • 는 모델에 추가 매개 변수를 추가합니다. Extra. 및 Extra.for(기본값)를 수락하고 ormar 모델에 전달된 추가 필드를 무시하거나 예외가 발생하면 예외를 발생시키는 메타 #358

🐛

  • 필드가 nullable이고 옵션이 #354로 설정된 경우 "없음"은 허용되지 않습니다.
  • 자동 증가 및 명시적 null 가능 설정에 관계없이 마이그레이션 문제를 방지하려면 항상 Primary _key를 null이 아닌 것으로 설정하십시오 #348

0.10.19

✨

  • Meta. #307에서 고유하지 않은 다중 열 인덱스 열에 대한 지원 추가
  • 는 sql_nullable 필드 속성을 추가하여 pydantic 모델과 기본 sql 열에 대해 다양한 nullable 설정을 허용합니다 #308

🐛

  • 성능 향상을 위한 다이어그램 캐싱 사용 #337
  • nullable 필드에 대한 문서 명확화 및 수정 #339

다른 💬

  • 지원되는 데이터베이스 버전을 <= 5.2로 업그레이드하십시오.

0.10.18

🐛

  • pydantic 모델의 필드 순서 수정 #328
  • 데이터베이스 복구0.5.0지원 #142

0.10.17

✨

  • 모델 필드를 재정의할 수 있는 기본 피단틱 유형 #312
  • sqlalchemy에 대한 지원 추가 > = 1.4 (데이터베이스 필요 > = 0.5.0) #142

0.10.16

✨

  • 를 사용하면 자신의 피단틱 구성을 ormar에 전달할 수 있습니다. @alethic에 의해 기본 구성과 병합되는 모델(감사합니다!) #285
  • @ProgrammerPlus1998을 통해 작은 정수 필드 유형 추가(감사합니다!) #297

🐛

  • 스키마 #291에 직접 노출된 오래된 피단틱 필드 매개 변수를 제거하여 고정 생성 OpenAPI 스키마
  • 모델 #295를 통해 자동으로 생성되는 불필요한 경고 수정

0.10.15

🐛

  • 중첩 모델을 사용하여 피단틱 모델 트리를 생성하는 문제를 해결합니다(by @paoy - 감사합니다!) #278
  • 기본 키 필드 누락에 대한 경고에서 누락된 f 문자열 수정 #274
  • 외국 키 값을 관계로 고정 전달(추가 보호, 최신 버전에서 고정) #270

0.10.14

✨

  • 를 사용하면 시간대 인식 데이터베이스 열 #264의 날짜 및 시간 필드에 시간대: bool = 거짓 매개 변수를 전달할 수 있습니다.
  • 를 사용하면 날짜 시간, 시간 및 날짜 필드에서 필터링할 날짜 시간, 날짜 및 시간을 전달하여 값을 문자열로 변환하는 대신 날짜 시간별로 필터링할 수 있습니다.

🐛

  • cycopg2에서 cycopg2- #255로 종속성을 수정합니다.

0.10.13

✨

  • 를 사용하면 필드 접근자를 선택 _lated 및 프리페치 _lated로 통과시킬 수 있습니다. 파이썬 스타일 선택 _ 관련 #225.

    • 이전:

      Post.ts.t_(["저자", "카테고리"])를 기다립니다. 기다리다 권한.ts.prefetch_("s__").get()

    • 이제 또한:

      Post.ts.t_([Post.author, Post.]).get()을 기다립니다. 기다리다 권한.ts.prefetch_ (권한.post 카테고리).get ()

🐛

  • 상속된 기본 키의 기본값 재정의 수정 #253

0.10.12

🐛

  • Init을 사용하지 않는 QuerySet.create 방법 수정(사용자 지정이 제공되는 경우) #245
  • 수정ForwardRefManyToMany관계 설정 잘못된 피단틱 유형 #250

0.10.11

✨

  • 는 값과 값 _list를 Query세트 및 QuerysetProxy에 추가하여 원래 데이터 소스를 쿼리 #223에서 반환할 수 있습니다.
    • 쿼리에서 튜플 또는 사전 목록을 반환할 수 있습니다.
    • 데이터를 ormar 모델로 분석하는 것을 건너뛰고 따라서 검증을 건너뜁니다.
    • 관계형 체인 간에 모델을 제외할 수 있으므로 필요한 열만 추출할 수 있습니다.
    • 하나의 열만 추출된 경우 _list 값을 사용하여 결과를 평평하게 만들 수 있습니다.

🐛

  • ForwardRef #226을 사용하여 m2m 관계형 모델을 통한 자동화 생성

0.10.10

✨

  • 는 get_pydantic 플래그를 추가하여 ormar에서 동등한 pydantic 모델 트리를 자동으로 생성할 수 있습니다. 모델. 새로 생성된 이 모델 트리는 요청 및 응답에 사용하여 데이터에 포함하지 않을 필드를 제외할 수 있습니다.
  • 는 모델 메타에 예외 __field 매개 변수를 추가하여 상속 중에 상위 모델에서 필드를 제외할 수 있습니다. 모델과 믹스를 결합하는 것이 가장 좋은 방법이지만 유사한 모델이 많고 다른 모델이 하나뿐이라면 이 목표를 달성하는 데 유용한 도구가 될 수 있습니다.

🐛

  • 페이징 및 관계로 빈 필터 수정(@erichaydel의 정중함) #214
  • 수정 #216 이전에 저장되지 않은 경우 하위 개체는 관계의 뒷면에 저장되지 않습니다.

다른 💬

  • 문서의 FastAPI 섹션을 확장하여 FastAPI 요청 및 응답에서 Ormar를 사용하는 예를 보여 줍니다.
  • 기본값, ForeignKey.add 등에 대한 문서가 개선되었습니다.

0.10.9

# # 중요한 보안 수정

  • 보안 버그를 수정하기 위해 피단틱 핀 업데이트 CVE-2021-29510

패치 버전의 pydantic으로 업데이트하는 것이 좋습니다. 0.10.9에서 ormar는 고정 종속성에 취약성이 있는 버전을 제외합니다.

🐛

  • 큰 바이너리의 OpenAPI 아키텍처 수정 #204

0.10.8

🐛

  • pk_ 전용 하위 모델 #202에서 패딩 기본값 수정
  • base64 str 표현을 사용하여 큰 이진 필드에 대한 mypy # 199 수정
  • Base64 str 표현 #199를 사용하여 큰 이진 필드에 대한 OpenAPI 스키마 형식 수정
  • Base64 str 표현을 사용하여 큰 이진 필드에 대한 OpenAPI 선택 인코딩 수정

0.10.7

✨

  • exclude_primary_keys: bool = False 태그를 dict() 메서드에 추가하여 결과 사전의 모든 기본 키 열을 제외할 수 있습니다. 164장
  • 는 exclude_through_models: bool = False dict()의 플래그를 추가하여 모든 모델을 ManyToMan 관계에서 제외할 수 있도록 합니다.
  • represent_as_base64_str: bool = False 를 추가하여 바이트 큰 이진 필드를 base64 인코딩된 문자열 매개 변수로 변환할 수 있습니다. 속성에 액세스할 때 문자열은 dict()로 반환되고 문자열은 설정되면 바이트로 변환됩니다. 데이터베이스의 데이터는 바이트로 저장됩니다. 187장
  • Model.pk 필터의 필드에 액세스하고 절별로 정렬할 수 있도록 pk 별칭을 추가합니다(파이썬 스타일).

🐛

  • 큰 이진 필드의 최대 _ 길이에 대한 기본 없음 옵션 제거
  • 기본 제거 문자열 필드 max_long에 대한 없음 옵션

다른 💬

  • 문서에서 판결() 매개 변수를 제공하기 위한 지침 및 예
  • 매직 메소드의 속성을 설명자에게 가져오고 설정하는 주요 리팩토링 -> 상당한 성능 향상

0.10.6

✨

  • 큰 이진수 추가(최대 _길이) 필드 유형 #166

  • 는 이제 사용되지 않는 Pydantic_ 전용 속성 대신 일반 Pydantic 필드(모델 포함)에 대한 지원을 추가합니다. 피단트 필드는 ormar 필드 옆에 있는 피단트 모델에서와 같이 정상적으로 선언되어야 합니다. (분명히) ormar는 데이터베이스에 이 필드의 값을 저장하고 로드하지 않으므로 다음 중 하나가 사실이어야 합니다.

    • ormar 모델에 선언된 Pydantic 필드는 선택 사항이어야 합니다(기본값은 없음).
    • pydantic 필드를 기본값으로 설정해야 합니다.
    • Pydantic 필드에는 기본 _공장 함수 집합이 있습니다.
    • 피단트 필드가 있는 모델은 __init__()를 재정의하고 거기에 값을 제공해야 합니다.

    데이터베이스에서 데이터를 로드하는 동안 위의 ormar(또는 오히려 pydantic) 중 하나도 실패하지 않고 선언된 pydantic 필드에 필요한 값이 누락된 경우.

  • Ormar는 이제 중첩된 모델을 포함하여 openapi 패턴에서 의미 있는 예를 제공합니다. dict()와 동일한 알고리즘을 사용하고 _all을 선택하여 보지 않고 관련 모델을 반복합니다. 예는 api에도 나타납니다. 157장

🐛

  • 기본적으로 pydantic은 할당 중에 필드를 검증하지 않으므로 ORM에 이상적인 설정이 아닙니다. 이제 모든 ormar. 모델은 할당 중에 유효성 검사가 켜집니다(예: model.열 = '값').

다른 💬

  • Reame #180의 QuickStart에서 데이터베이스에 연결 추가
  • OpenAPI 아키텍처는 더 이상 ormar를 포함하지 않습니다. 설명으로 문서 문자열을 모델링합니다. 자신의 문서 문자열을 제공하지 않는 경우 모델 이름만 제공합니다.
  • 일부 성능 향상.

0.10.5

🐛

  • 빠른 페이지화에서 버그 수정 #73
  • 는 QuerySet.all() 및 Querysetproxy.all() 반환 값의 목록[옵션[T]]에서 불필요한 옵션#174를 제거합니다.
  • 실행 테스트 적용률은 GitHub 작업이 아닌 내부 PRS에서만 공개됩니다.

0.10.4

✨

  • 는 던더 구분 문자열 대신 필드 액세스를 사용하여 파이썬 스타일의 filter 및 order_by 를 추가합니다. 51장
    • 속성 액세스(도트 체인)를 통해 필드에 액세스하는 것을 사용하여 필터 그룹(ormar.and)을 구성할 수 있습니다. 그리고 오마.)
    • 필드 액세스는 일련의 파이썬 연산자를 오버로드하고 **kwargs에서 던더 구분 매개 변수 이름과 동일한 기능을 허용하는 일련의 기능을 제공합니다. 이는 모델 앨범과 관련된 예제 모델 트랙을 의미합니다. 이제 더 많은 옵션이 있습니다.
      • 정확한 - 값과 정확히 일치, sql 열 =
        • old: __name__='Malibu.'
        • New: Track.album.name==' Malibu로도 쓸 수 있습니다.
      • 정확하지 않음 - 정확한 일치 sql 열 =(대소문자 무감각)
        • 이전: 앨범__이름__i= '말리부'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.iexact('malibu')
      • 에는 '%%'와 같은 sql 열이 포함되어 있습니다.
        • 이전: 앨범__이름__ 포함 = '말'
        • New: Track.album.name% 'Mal'로도 쓸 수 있습니다)
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.contains('Mal')
      • 아이콘 - '%%'와 같은 sql 열 (대소문자 무감각)
        • 이전: 앨범 __이름__아이콘테인='mal.'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.icontains('mal')
      • -sql에서 column IN (<VALUE1>, <VALUE2>, ...)
        • 오래된: album__name__in=['Malibu', 'Barclay']
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name << ['Malibu', 'Barclay']
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.in_(['Malibu', 'Barclay'])
      • Isnull - sql 열이 NULL(및 sql 열이 NULL이 아님)
        • old: __name__isnull=True(isnot null__name__isnull=거짓)
        • New: Track.album.name>> 없음으로도 쓸 수 있습니다.
        • 새로운: Track.album.name isnull로도 쓸 수 있습니다(참)
        • New: not null은 다음과 같이 쓸 수도 있습니다. Track.album.name.isnull(False)
        • New: not null은 ~(Track.album.name>> 없음)로 쓸 수도 있습니다.
        • New: not null은 다음과 같이 쓸 수도 있습니다. ~(Track.album.name.isnull(True))
      • gt - sql 열 >(보다 큰)
        • 이전: 위치__gt=3
        • 새로운 것: Track.album.name>3으로도 쓸 수 있습니다.
      • gte - sql 열 > =(보다 크거나 같음)
        • 이전: 위치__gte=3
        • 새로운 것: Track.album.name로도 쓸 수 있습니다 > = 3
      • lt - sql 열 <(아래)
        • 이전: 위치__lt=3
        • 새로운: Track.album.name <3으로도 쓸 수 있습니다.
      • lte - sql 열 <=(보다 작거나 같음)
        • 이전: 위치 __lte = 3
        • 새로운 것: Track.album.name으로도 쓸 수 있습니다 <=3
      • 시작 - sql 열 LIKE'%'(정확한 시작 일치)
        • 이전: 앨범__이름__ 시작 = '말'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.startswith('Mal')
      • Istarswith - sql 열 Like'%'(케이스 무감각)
        • 오래된: album__name__istartswith='mal'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.istartswith('mal')
      • 끝 - sql 열 좋아요'%(경기가 완전히 끝났습니다)
        • 이전: 앨범__이름__endswith='ibu.'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.endswith('ibu')
      • iendswith - sql 열 LIKE '%' (대소문자 무감각)
        • old: __name__iendswith='IBU'
        • 새로운: 다음과 같이 쓸 수도 있습니다. Track.album.name.iendswith('IBU')
  • 필터() 및 ()를 제외하고 필터 그룹을 제공할 수 있을 뿐만 아니라 다음에서도 제공할 수 있습니다.
    • 겟()
    • 받든 말든 ()
    • 가져오기 또는 만들기()
    • 첫 번째 ()
    • 모두()
    • 삭제()
  • 필터 그룹을 통해(ormar.and) 그리고 오마.), 이제 사용할 수 있습니다.
    • 다음 단계 중첩 대신 &-as 및 _
    • |- 다음 단계 중첩 대신 "또는 _"로
    • ~ - 필터 그룹의 부정으로
  • 여러 필터 세트를 하나의 조건 세트로 결합하려면 &(sql AND) 및 |(sql OR)를 사용하십시오.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    # 다음 쿼리는 동일합니다.
    # sql: (product.name= '테스트' 및 제품.등급>=3.0)
    
    # ormar 옵션 1 - 오래된 것
    제품.개체.필터(이름 = '테스트', rating__gte = 3.0).get ()
    
    # ormar 옵션 2 - 오래된 것
    제품.개체.필터(ormar.and_(이름 = '테스트', rating__gte = 3.0)).get()
    
    # ormar 옵션 3 - 새로운 옵션(현장 액세스)
    제품.개체.필터(((Product.name=='테스트') & (제품.등급>=3.0)) .get()
    
  • 중첩된 복잡한 필터에도 동일하게 적용됩니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # 다음 쿼리는 동일합니다.
    # sql: (product.name= '테스트' 및 제품.등급>=3.0)
    # 또는 (categories.name('장난감', '책'))
    
    # ormar 옵션 1 - 오래된 것
    제품.개체.필터(ormar. 또는 _(
                              Ormar.and_(이름 = '테스트', rating__gte = 3.0),
                              카테고리 __name__in = ['장난감', '책'])
                          ). 얻다 ()
    
    # ormar 옵션 2 - 새로운 것 (중첩되거나 `|` 를 사용하는 대신)
    제품.개체.필터(
                          Ormar.and_ (이름 = '테스트', rating__gte = 3.0) |
                          Ormar. 및 _ (카테고리 __name__in = ['장난감', '책'])
                          ). 얻다 ()
    
    # ormar 옵션 3 - 새로운 옵션(현장 액세스)
    제품.개체.필터(
                          (((Product.name= '테스트') & (제품.등급>=3.0)) |
                          (Product.categories.name<['장난감', '책'])
                          ). 얻다 ()
    
  • 이제 필드 액세스를 사용하여 주문_by()에 주문 액션을 제공할 수도 있습니다.

    • 오름차순으로:
      • 오래된: Product.objects.order_by("name").all()
      • 새로운: Product.objects.order_by(Product.name.asc()).all()
    • 내림차순:
      • 오래된: Product.objects.order_by("-name").all()
      • 새로운: Product.objects.order_by(Product.name.desc()).all()
    • 물론 다양한 모델과 많은 주문을 결합할 수도 있습니다. Product.objects.order_by([Product.category.name.asc(), Product.name.desc()]).all()

🐛 수리

  • 실제로 버그가 아니라 불일치입니다. 중첩된 모델(예: 앨범_)로 필터를 제공합니다.카테고리__name='AA'는 앨범 및 카테고리 모델이 선택 항목에 포함되는지 여부를 확인하고 있습니다_늦은 시간()에 없으면 자동으로 추가됩니다. 필터 그룹(및 )에는 동일한 기능이 적용되지 않습니다. 그리고 또는 _), 이제 작동합니다(필터 그룹을 반환하는 파이썬 스타일 필터에서도 작동합니다).

0.10.3

✨ 특징

  • forigKey 및 ManyToMan은 이제 스킵 \ _ 리버스: bool = 거짓 플래그 # 118을 지원합니다. 내부적으로 스킵 \ _ 리버스 플래그를 설정한 경우 필드는 관계의 다른 쪽 끝에 여전히 등록되어 있으므로 다음을 수행할 수 있습니다.

    • 역방향 모델의 관련 모델 필드별 필터링
    • 리버스 모델에서 관련 모델 필드별로 _by 주문

    그러나 당신은 할 수 없습니다:

    • 관련 _name을 사용하여 역방향 모델에서 관련 필드에 액세스
    • 모델의 반대쪽에서 상관 관계를 선택하더라도 반환된 모델은 역방향 인스턴스에 채워지지 않습니다(연결을 차단하지 않으므로 여전히 필터링하고 주문할 수 있습니다_by).
    • 이 관계는 dict()와 json()으로 채워지지 않습니다.
    • 는 dict() 또는 json()( ( ( ( ( ( ( ( ) )에서 채워졌을 때 중첩 된 관련 개체를 전달할 수 없습니다. ( ( )
    • Model.save_lated()는 이제 전체 데이터 트리를 한 번에 저장할 수 있습니다.

    • 관계를 보존하기 위해 마스터 모델 또는 관련 모델을 먼저 저장해야 하는지 알고 있습니다.

    • 마스터 모델을 저장합니다.

      • 보존되지 않았습니다.
      • pk 값 없음
      • 또는 저장 _all = 참 플래그가 설정되었습니다.

      이러한 경우 저장을 두 개의 호출로 나눌 필요가 없습니다(저장() 및 저장_lated())

    • 또한 다대다 관계를 지원합니다.

    • 또한 m2m 관계에 대한 모델 값을 통해 옵션을 지원합니다.

  • 모델 관계 필드 이름으로 사용자 지정할 수 있는 가능성을 추가했습니다.

  • 기본적으로 연결된 모델 이름은 모델 관계 이름으로 소문자입니다. 이와 같은 예에서 다음과 같습니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ... ## 코스 선언 생략
    클래스 학생(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        과정 = ormar. 많은 것 (과정)
    
    ##는 다음과 같은 기본 모델을 생성합니다(예: 단순화).
    클래스 학생 과정(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
            표 이름 = "학생_과정"
    
        ID: int = ormar. 정수(prial_key = 참)
        학생 = ormar. 외국인 키(학생)
        과정 = ormar. ForeignKey (과정) # 기본 이름
    
  • 스루 모델에서 필드/관계 이름을 사용자 정의하려면 이제 ManyToMan의 새 매개 변수를 사용할 수 있습니다.

    • __name - ManyToMan을 선언하는 모델로 이어지는 필드 이름을 통해
    • ___name을 통해 ManyToLong이 이끄는 모델의 필드 이름으로 이동합니다.

    예:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    ... # 코스 선언 생략
    클래스 학생(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
    
        ID: int = ormar. 정수(prial_key = 참)
        이름: str = ormar. 문자열(max_long = 100)
        과정 = ormar. 많은 것 (과정,
                                   스루 _ 관계 _ 이름 = "
                                   스루 _ 역방향 _ 관계 _ 이름 = " _id")
    
    #는 다음과 같은 기본 모델을 생성합니다(예: 단순화).
    클래스 학생 과정(ormar. 모델):
        클래스 메타:
            데이터베이스 = 데이터베이스
            메타데이터 = 메타데이터
            표 이름 = "학생_과정"
    
        ID: int = ormar. 정수(prial_key = 참)
        학생 _ id = ormar. 외국인 키(학생)
        _id = ormar. ForeignKey (과정)
    

🐛 수리

  • 약점 수정 참조 오류 #118
  • pydantic ConFig.="금지"를 설정할 때 필드를 통해 던져진 버그 수정
  • 파이낸틱을 고칩니다. PrivateAttr는 _\에 없습니다._Init__초기화 오류 #149
  • dict() 및 _\에서 pydantic 유형 제외 오류를 수정합니다._모두__key가 작동하지 않습니다

💬기타

  • 모델 소개를 위한 sqlalchemistry-to-ormar 자동 번역기 링크
  • Ormar를 지원하는 FastAPI 에코시스템 라이브러리에 대한 링크 제공
  • 문서에 트랜잭션 추가(데이터베이스 지원)

0.10.2

✨ 특징

  • Model.save_related(follow=False) 이제 두 가지 추가 매개 변수도 허용됩니다. Model.save_related(follow=False, save_all=False, exclude=None) ...
    • 저장_all:bool -> 기본적으로 (그래서 저장_all=거짓) ormar 업데이트는 저장되지 않은 모델(따라서 새 모델 또는 업데이트된 모델)만 삽입합니다. 저장_all= 모든 관련 모델은 저장 상태에 관계없이 저장됩니다. 이는 다음과 같습니다. API 호출에서 모델을 업데이트하여 백엔드에서 변경되지 않도록 하는 것이 유용할 수 있습니다.
    • exclude: Union[Set, Dict, None] -> 다음 = 참 및 저장 _all = 참을 사용하더라도 저장에서 제외할 설정/사전 관계. 중첩된 관계를 제외하려면 중첩된 사전을 전달합니다. 예를 들어 다음과 같습니다. exclude={"child":{"sub_child": {"exclude_sub_child_realtion"}}} 허용된 값은 필드 / 제외 \ _ 필드 (쿼리 세트에서) 메서드 스키마를 따르므로 확실하지 않은 경우 쿼리의 설명서를 참조할 수 있습니다 -> 워드 세트 선택 -> 필드
  • Model.() 메서드는 이제 업데이트할 열 이름 목록을 허용하는 _: List[str] = 없음 매개 변수를 허용합니다. 통과되면 해당 열만 데이터베이스에서 업데이트됩니다. 업데이트()는 모델의 인스턴스를 새로 고치지 않으므로 _ 목록에서 전달한 것보다 더 많은 열을 변경하면 모델 인스턴스의 값이 데이터베이스와 다릅니다!
  • Model.Model_dump() 메서드는 이전에 직접 관련된 모델 또는 중첩 모델만 포함했습니다(가상이 아닌 경우). 이제 루프 없이 이전에 액세스하지 못한 모든 관련 모델이 dict()에 포함됩니다. 더 많은 데이터가 사전에 버려지기 때문에 이것은 깨지지 않아야 하지만 잃어버려서는 안 됩니다.
  • QuerySet.delete(each=False, **kwargs) 이전에 필터를 전달하라는 요청을 받았습니다(경유 **Kwargs는 별도의 필터() 호출로 설정하거나 각 = True를 설정하면 이제 NO 필터를 생성하는 배타적() 호출도 허용됩니다. 따라서 전체 테이블을 제거하거나 하나 이상의 필터/제외 절을 제거하려면 각 = True를 설정해야 합니다.
  • 필터를 통과하도록 요구하기 전에 QuerySet.update(each=False, **kwargs) 에도 동일한 사항이 적용됩니다(**kwargs를 통해 또는 별도의 필터() 호출로). 또는 각각을 설정하기 전에 = True도 예외(NO 필터를 생성)를 허용합니다. ) 호출. 따라서 전체 테이블을 업데이트하거나 하나 이상의 필터/제외 절을 업데이트하려면 각 = True를 설정해야 합니다.
  • 동일한 것이 적용됩니다 QuerysetProxy.update(each=False, **kwargs) 또한 필터를 통과해야 합니다(경유 **Kwargs는 별도의 필터() 호출로 설정하거나 각 = True를 설정하면 이제 NO 필터를 생성하는 () 호출을 제외하고도 허용됩니다. 따라서 전체 테이블을 업데이트하려면 각 = True를 설정하거나 하나 이상의 필터/제외 절을 설정해야 합니다.

🐛 수리

  • fk 열에 다른 데이터베이스 별칭이 있는 경우 QuerysetProxy에서 잘못된 관계 필드 해상도를 수정합니다.
  • dict()를 호출할 때 루프가 있는 매우 복잡한 모델 구조를 가진 재귀 버그를 수정했습니다.
  • 관계형이 아닌 두 개의 필드가 관계형이 아닐 때 쿼리 결과에 병합(추가)되었을 때 버그 수정(예: JSON)
  • 목록에서 사전으로 번역하는 동안 체인에서 동일한 관계 이름을 사용했지만 다른 모델을 만든 버그를 수정했습니다.
  • 속성 _field 데코레이터 및 pydantic 필드를 저장하려고 할 때 대량 수정 _ 생성 오류
  • 역방향 관계를 가진 깊은 중첩 체인의 잘못된 병합 수정

💬기타

  • 성능 최적화
  • 테스트 영역을 기준으로 테스트를 패키지로 분할

0.10.1

특징

  • 는 get_ 또는_ no(**kwargs) 메서드를 Queryset 및 QuerysetProxy에 추가합니다. get(**kwargs)과 정확히 동일하지만 조건과 일치하는 데이터베이스 레코드가 없으면 get_ 또는_ no는 ormar를 올리지 않습니다. NoMatch 예외 및 간단히 없음을 반환합니다.

수리

  • 순서 _by 절의 방언 관련 열 이름 및 테이블 이름 참조가 posgres에서 제대로 작동하지 않는 문제를 해결합니다.

0.10.0

휴식

  • ormar 필드를 유형 힌트로 사용하는 오랫동안 사용되지 않은 필드 정의 표기법에 대한 지원을 제거했습니다. test_field: ormar.Integger() = None
  • 개선된 유형 힌트 -> mypy는 관련 모델 필드(ForeignKey 및 ManyToLong)와 쿼리 세트 방법의 반환 유형을 올바르게 해결할 수 있습니다. 언급된 사람들은 이제 ormar 대신 올바른 모델(즉, 책)을 반환합니다. 모델 유형. QuerysetProxy 메서드의 관계와 역방향에는 여전히 문제가 있어 이제 Any. 부분 수정 #112.

특징

  • 는 select_all(follow: bool = False) Queryset 및 QuerysetProxy에 대한 메소드를 추가합니다. 모델의 로드_all() 메서드와 유사하지만 쿼리에서 직접 사용할 수 있습니다. 기본적으로 _all()을 선택하면 직접 관련된 모델만 추가되고 팔로우하면 = True도 관계에서 루프하지 않고 관련 모델의 관련 모델을 추가합니다. 비동기 모델이 아니며 종료되므로 _all()을 선택하면 필드() 또는 순서_by()와 같은 쿼리 세트(또는 프록시)가 반환되기 때문에 get(), all() 등을 발행해야 합니다.

내부 구조

  • Ormar 필드는 더 이상 Meta.Model_field 사전에 클래스로 저장되지 않고 인스턴스로 저장됩니다.

0.9.9

특징

  • 관계 및 모델의 기본 순서를 변경할 수 있는 가능성을 추가합니다.
    • 모델 순서를 변경하려면 순서를 _by=[열]로 전달합니다. 여기서 열: 목록[str]을 모델 메타 클래스로 보냅니다.
    • 관계 순서 _by를 변경하려면 순서 _by=[열]을 전달합니다. 여기서 열: 목록[str]
    • 역관계 순서를 변경하려면 _by 패스 관련 _order_by=[] 여기서 열: 목록[str]
    • 매개 변수는 열 이름 또는 -{col_name}가 내림차순으로 정렬될 수 있습니다.
    • 관계에서 직접 관련된 모델 열로만 정렬할 수 있으며 다대다 열의 경우 모델 열로 정렬할 수도 있습니다. "{through_field_name}__{column_name}"
    • 주문_by 절은 다음 순서로 적용됩니다.
      • 쿼리에서 _by() 호출을 명시적으로 전달합니다.
      • 명령에 의한 관계가 있는 경우_by
      • 모델 메타 클래스 주문_by
      • 기본 키 열 ASC 모델(폴백, 위의 항목이 제공되지 않은 경우 사용)
  • 네 가지 새로운 집계 함수를 추가합니다. > min, max, 합계 및 avg는 해당 SQL 등가입니다.
    • 관련 열을 포함하여 하나 이상의 열 이름을 전달할 수 있습니다.
    • 현재 전달된 각 열은 개별적으로 집계됩니다(따라서 합계(col1 + col2)는 불가능하므로 합계(col1, col2)를 사용한 다음 파이썬으로 반환된 2의 합계를 추가할 수 있습니다).
    • 숫자가 아닌 열을 합하거나 평균할 수 없습니다.
    • 열이 집계되면 단일 값이 결과로 직접 반환됩니다.
    • 여러 열을 집계하는 경우 다음 열과 함께 사전을 반환합니다. 결과 쌍
  • 는 4개의 새로운 신호를 추가합니다. -> pre__추가, post__추가, pre__제거 및 post__제거
    • 에서 새로 추가된 신호는 ManyToMan 관계(양 당사자)와 외래 키 관계(공개 QuerysetProxy와 동일)의 반대에 대해 방출됩니다.
    • 신호는 다음 매개 변수를 수신합니다. 발신자: Type[Model] - 발신자 클래스, 인스턴스: Model - 관련 모델의 인스턴스 추가, 하위: Model - 모델 추가, _name: str - 하위 관계 추가 추가 신호와 같은 이름도 _kwargs를 통해 전달됩니다. 사전 - 추가하기 위해 전달된 kwargs 사전()

변화

  • 이제 생성, 삭제 및 업데이트 중에 다대다 관계의 모델을 Instantiate하면 기본 키로 자동 증가 int뿐만 아니라 기본 기능이 있는 모든 열 유형을 제공할 수 있습니다.
  • 이제 스루 모델이 Instantiated되었으므로 스루 모델 전후에 신호를 저장/업데이트/삭제할 수도 있습니다.
  • _ 신호 수신기는 이제 업데이트 함수에 전달된 값의 사전(있는 경우)인 통과_args 매개 변수도 가져옵니다(그렇지 않으면 빈 사전).

수리

  • 이제 값을 가져오기 전에 사전 _ 신호를 전송하여 전달된 인스턴스를 제자리에 수정할 수 있으며 수정된 필드 값이 데이터베이스에 반영됩니다.
  • 이제 대량 _가 UUID 기본 키 열 유형을 올바르게 사용할 수도 있습니다.

0.9.8

특징

  • 데이터베이스에서 선택한 필드를 암호화할 수 있는 가능성 추가
    • 최소한 암호화_비밀을 제공하고 암호화_백엔드를 제공해야 합니다.
    • pt_backend는 ormar 중 하나가 될 수 있습니다. EncryptBackend 열거(NONE, FERNET, HASH, CUSTOM) - 기본값: NONE
    • 사용자 지정 백엔드를 선택할 때 하위 클래스 또는 mar.field를 제공하는 백엔드 클래스를 제공해야 합니다. EncryptBackend
    • 기본 _key 열 및 관계형 시리즈(FK 및 M2M)를 암호화할 수 없습니다.
    • HASH와 FERNET의 두 가지 백엔드를 제공합니다.
      • HASH는 검색 시 암호가 해독되지 않는 단방향 해시(암호와 같은)입니다.
      • FERNET은 양방향 암호화/암호 해독 백엔드입니다.
    • FERNET 백엔드에서는 암호화된 값의 일부가 타임스탬프이기 때문에 필터링 가능성이 완전히 사라집니다.
    • HASH 백엔드에서는 전체 값으로 필터링할 수 있지만 포함된 필터는 암호화된 값을 비교하기 때문에 작동하지 않습니다.
    • pt_backend를 추가하면 데이터베이스 열 유형이 TEXT로 변경되며 마이그레이션 또는 수동 변경으로 db에 반영되어야 합니다.

수리

  • (고급/내부)는 유형을 통해 중지된 작동 사용자 지정 sqlalchemy 유형 함수를 복원합니다. TypeDecorator 하위 클래스), 그래서 프로세스 \ _ 결과 \ _ 값

0.9.7

특징

  • isnull 연산자를 추가하여 메소드를 필터링하고 제외합니다.

    1
    2
    앨범 __name __isnull = 참 # (sql: album.name은 null)
    앨범 __name __isnull = 거짓 # (sql: album.name null이 아닙니다))
    
  • 는 ormar.or_및 ormar.and_함수를 추가하여 복잡한 쿼리를 중첩 조건과 결합하는 데 사용할 수 있습니다. 예제 쿼리:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    책 = (
        북.ts._("저자")를 기다립니다.
        . 필터 (
            Ormar. 그리고 _ (
                Ormar. 또는 _ (year__gt = 1960, year__lt = 1940),
                저자__name="J.R.R. 톨킨",
            )
        )
        . 모두 ()
    )
    

    쿼리에서 업데이트된 문서 확인 -> 필터 및 정렬 -> 복잡한 필터

기타

  • ForeignKey 또는 ManyToLong에서 기본값을 설정하면 모델 정의 예외가 발생합니다. 이는 지원되지 않기 때문입니다.

0.9.6

중요

다대다 관계 모델을 통한* 는 이제 선택 사항이 되고 있습니다. 제공하면 모든 것이 이전과 같이 작동하기 때문에 큰 변화는 아닙니다. 따라서 모델의 다른 필드를 원하지 않거나 "통과"할 필요가 없는 경우 건너뛸 수 있습니다. 자동으로 생성되며 alembic 마이그레이션 예제에 포함되어야 합니다. 기존 데이터베이스를 삭제하려면 기본 명명 규칙을 확인하여 기존 데이터베이스 구조를 조정하십시오.

1
모델 이름 또는 데이터베이스 및 테이블 이름을 사용자 정의하려면 여전히 제공해야 합니다.

특징

  • 는 QuerysetProxy에 업데이트 방법을 추가하므로 이제 관련 모델을 ManyToMan 관계의 상위 모델과 역외 키 관계에서 직접 업데이트할 수 있습니다. QuerySet와 같은 업데이트는 업데이트된 모델 수를 반환하고 상위 모델에서 관련 모델을 업데이트하지 않습니다. 상위 모델에 대한 새로 고침 데이터를 가져오려면 관련 모델(예:await model_instance.related.all())을 새로 고쳐야 합니다.
  • 추가 load_all(follow=False, exclude=None) 모델의 현재 인스턴스와 모든 관련 모델을 한 번의 호출로 로드할 수 있는 모델 방법입니다. 기본적으로 직접 관련된 모델만 로드되지만 팔로우 = True를 설정하면 트리가 통과됩니다(루프 방지). QuerySet._field() 메서드와 동일한 제외 매개 변수를 전달할 수도 있습니다.
  • 다대다 관계의 스루 모델에 더 많은 필드를 추가할 수 있는 가능성을 추가했습니다.
    • 스루 모델 필드의 이름은 스루 클래스의 소문자 이름입니다.
    • 관계에서 추가(자녀, **kwargs)를 호출할 때 (QuerysetProxy에서) 추가 필드를 전달할 수 있습니다.
    • 키워드 인수 중 하나가 값 사전이 있는 모델 이름이어야 하는 경우 관계(QuerysetProxy)에서 생성()을 호출할 수 있습니다.**Kwargs) 다른 필드를 통과할 때
    • 모델 필드를 통해 주문할 수 있습니다.
    • 모델 필드별로 필터링할 수 있습니다.
    • 모델별 필드를 포함하거나 제외할 수 있습니다.
    • 모델을 통해 관련 모델에만 추가하십시오(즉, A에서 B로 조회하는 경우 -> B에서만 조회하는 경우).
    • 패스스루 모델은 관계 없이 명시적으로 로드된다는 점에 유의하십시오. -> 관계는 ManyTo많이 필드에 채워져 있습니다.
    • 모델을 통해 관계형 필드를 선언할 수 없었던 이전과 마찬가지로 ormar에 의해 채워지지만 이제 그렇게 하려고 하면 던질 것입니다ModelDefinitionError
    • 자세한 내용을 보려면 업데이트된 ManyTo많이 관계 문서를 확인하십시오.

기타

  • 업데이트된 문서 및 API 문서
  • 리팩토링 및 최적화에는 주로 필터, 제외 및 정렬 기준이 포함됩니다.

0.9.5

수리

  • pydantic을 버전으로 업데이트한 후 pydantic FieldInfo 생성 문제를 해결합니다 > = 1.8
  • 향후 이러한 상황을 방지하기 위해 필요한 종속성 버전 수정

0.9.4

수리

  • 여러 모델이 동일한 관련 모델을 참조할 때 자동 문서화를 위한 고정 패스트파피 OpenAPI 스키마 생성

0.9.3

수리

  • 초기화 후 값을 설정할 때 JSON 필드가 이중으로 이스케이프되는 문제를 해결했습니다.
  • 파이썬 내부 구조로 인해 JSON 필드가 빈 필드 설정을 준수하지 않는 문제를 해결합니다.
  • JSON 필드에 대한 선택 확인 수정
  • 초기화 후 속성을 설정할 때 검증되지 않은 옵션 수정
  • 쿼리 설정 업데이트 호출 중에 검증되지 않은 수정 옵션

0.9.2

기타

  • 설명서/readme 파일의 빠른 시작 업데이트
  • 하위 페이지를 쿼리할 수 있는 링크가 있는 업데이트된 문서
  • 코드 기후 및 다운로드에 대한 배지 추가

0.9.1

특징

  • OpenAPI 사양에 옵션 값을 추가하여 결과 스키마의 기본 Enum 필드처럼 보이게 합니다.

수리

  • 특수 필드가 초기화되지 않았지만 문자열 등으로 전달된 경우 Fastapi를 사용하여 선택 동작을 수정합니다.

0.9.0

중요한

  • 브레이크 수정: 릴리스 0.8.0는 데이터베이스에서 외부 _key 제약 조건이 생성되는 것을 방지하는 버그를 도입했습니다.
  • 따라서 버전 > = 0.8.0을 사용하는 경우 대부분의 ormar 기능이 실행 중이지만 ormar(또는 ormar + alembic)로 생성된 데이터베이스는 관련이 없으며 성능 및 데이터 무결성 관점에서 어려움을 겪을 수 있으므로 업데이트하는 것이 좋습니다.
  • ormar를 사용하여 기존 데이터베이스에 연결하는 경우 성능과 무결성은 양호해야 하지만 이후의 모든 스키마 업데이트를 모델에 반영하도록 업데이트해야 합니다.

휴식

  • 돌파구: 이제 모든 외래 키와 고유한 제약 조건에 이름이 있으므로 alembic은 데이터베이스에 의존하지 않고 데이터베이스에서 해당 키를 인식할 수 있습니다.
  • 손상: 모델 구성 중에 모델의 메타 클래스에 메타데이터 또는 데이터베이스가 포함되어 있지 않으면 이제 일반 속성 오류 대신 ModelDefinitionError가 발생합니다.
  • 깨짐: 쿼리를 실행하는 데 사용되는 코드/데이터베이스에는 SQLite 백엔드에 대한 연결 풀이 없으므로 각 쿼리가 새 연결로 실행되고 각 연결에서 기본적으로 꺼져 있기 때문에 강제 외래 키 제약 조건을 활성화할 수 없습니다. 이것은 기본적으로 모든 sqlite3 쿼리가 "PRAGMA 외래 _key = 1;" 실행 중인 이후 ormar에서 변경되어 이제 모든 sqlite3 연결이 계단식을 포함하여 기본적으로 외래 키 제약 조건을 적용합니다.

기타

  • API 문서를 업데이트합니다.
  • 데이터베이스에 fk를 만들고 데이터베이스에 계단식 연결을 만드는 테스트를 추가합니다.

0.8.1

특징

  • 는 관계에서 ForwardRef의 처리를 설명합니다. 이제 외부 키와 다대다 관계 등 자체 참조 모델을 만들 수 있습니다. ForwardRef는 모델과 함께 사용할 수 있습니다.
  • 다음과 같은 복잡한 관계를 처리하기 위해 단일 쿼리에서 두 개의 동일한 관계 조인을 수행할 수 있는 가능성을 소개합니다.

    1
    2
    3
    4
    5
    6
    7
        B = X = Y
      //
     A
      \
        하나의 쿼리에 한 번만 X에서 Y로 연결하기 전에 C = X = Y =
                     두 가지 다른 관계가 사용되지 않는 한
                     (이름이 다른 두 개의 관계 필드)
    
  • 페이지 및 페이지 _ 크기별로 제한/오프셋을 허용하는 페이징 방법을 소개합니다. 쿼리 세트 및 쿼리 세트 프록시에 사용할 수 있습니다.

기타

  • 쿼리 및 조인에서 리팩토링 및 성능 최적화.
  • 테스트 및 Pypi 설정에 Python 3.9를 추가합니다.
  • 쿼리 문서의 분할인 API 설명서 및 설명서 ->를 업데이트합니다.

0.8.0

휴식

  • Breaking에서 자녀의 부모: 제거() 반전 외래 키 관계는 이제 동일한 모델을 여러 번 등록할 수 있기 때문에 관계 이름을 전달해야 하며 ormar는 자녀를 제거할 부모의 관계를 알아야 합니다.
  • 중단: 기본적으로 조인 전 기본 테이블에만 _lated 적용 한계 및 오프셋을 선택합니다. 즉, 총 행 수가 제한되지 않고 마스터 모델 수(쿼리의 첫 번째, 구성에 사용)만 사용됩니다. 여전히 한계 또는 오프셋(또는 둘 다)의 참 플래그를 사용하여 데이터베이스 응답의 모든 행을 제한할 수 있습니다.
  • 손상: 먼저 방출()하면 첫 번째 행이 기본 키 asc별로 정렬됩니다(따라서 첫 번째 행이 삽입됩니다(숫자가 아닌 기본 키의 경우 다를 수 있음 - 즉, 문자열의 알파벳 순서).
  • 손상: 필터 없이 get()을 방출하면 이제 기본 키 데스크별로 정렬된 첫 번째 행이 가져옵니다(따라서 마지막으로 삽입된 행이어야 합니다(숫자가 아닌 기본 키의 경우 다를 수 있음 - 즉, 문자열의 알파벳 순서).
  • 파괴(내부): Meta.에 남아 있는 sqlalchemy 열은 더 이상 테이블에 바인딩되지 않으므로 거기에서 열을 직접 검색할 수 없습니다.

특징

  • 상속을 소개합니다. 현재 가능한 상속에는 두 가지 유형이 있습니다.
    • Mixins - 하위 클래스 ormar를 사용하지 마십시오. 모델, 나중에 다른 모델에서 사용되는 필드를 정의하기만 하면 됩니다(예: 각 하위 모델에서 생성된 \ _ 날짜 및 업데이트된 \ _ 날짜). 실제 모델만 테이블을 만들고 해당 필드를 혼합에 추가합니다.
    • 콘크리트 테이블 상속 - 상위가 추상 = 메타 클래스에서 참으로 표시되고 각 하위에는 상위 및 자체 하위 열의 열이 있는 자체 테이블이 있으며 혼합과 다소 유사하지만 상위도 (추상) 모델입니다.
    • 자세한 내용은 모델 -> 상속 섹션에서 설명서를 참조하십시오.
  • 먼저 쿼리 세트()를 프리페치 _lated와 함께 사용할 수 있습니다.

수리

  • 메인 모델 순서의 _by 순서로 마이너 버그 수정
  • 동일한 모델에 대해 여러 관련 _ 이름 프리페치_ 쿼리를 수정합니다.
  • 는 서로 다른 모델에서 동일한 관련 _ 이름을 사용하여 수정하여 동일한 관련 모델이 서로 덮어쓰도록 하여 이제 ModelDefinitionError 높이고 이름을 변경해야 합니다.
  • 동일한 테이블에 여러 조인을 적용할 때 순서_by가 조건을 재정의하는 문제를 해결했습니다.

문서

  • 문서 분할 및 정리:
    • 모델을 더 작은 부분으로 나눕니다.
    • 관계 섹션을 하위 섹션으로 나눕니다.
    • 필드 부분을 작은 부분으로 나눕니다.
  • 모델 상속 섹션 추가
  • API(베타) 문서 추가

0.7.5

  • 많은 _to_많은 연결에서 잘못된 관계 시리즈 이름 수정(수정 #73)

0.7.4

  • 동일한 관련 모델/테이블에 대한 여러 관계를 허용합니다.
  • 많은 _to_많은 연결에 사용된 오류 수준 시리즈 수정(수정 #73)
  • 동일한 모델에도 FK 관계가 있는 경우 M2M 관계에 대해 잘못된 관계 모집단을 수정했습니다.
  • 모델의 동일한 테이블에 여러 관계가 있는 경우 사용자가 관련 _ 이름을 제공하는지 확인하기 위해 검사를 추가합니다.
  • 죽은 약한 프록시 모델을 더 열심히 정리합니다.

0.7.3

  • UUDI pk 설정을 사용하여 관련 모델을 가져오는 문제를 해결했습니다. 여기서 UUDI pk는 원시 문자열입니다(수정 #71).

0.7.2

pk Model.update() with fields passed as parameters 만으로 관련 모델을 덮어쓰기 위한* 수정 (수정 #70)

0.7.1

  • Model.save()에서만 pk를 사용하여 관련 모델 재정의 수정 (수정 #68)

0.7.0

  • Break: QuerySetBulk_ 메서드는 이제 저장되지 않은 모델에 ModelPersistenceErrorQueryDefinitionError
  • 돌파구: 알 수 없는 필드 이름을 가진 모델 초기화가 이제 키 오류 대신 모델 오류를 높입니다.
  • 는 미리 정의된 목록 신호와 데코레이터가 있는 신호를 추가합니다. post \ _ 삭제, post \ _ 저장, post \ _ 업데이트, pre \ _ 삭제, pre \ _ 저장, pre \ _ 업데이트
  • py.type을 추가하고 mypy를 지원하도록 setup.py 수정
  • 성능 최적화
  • 문서 업데이트

0.6.2

  • 성능 최적화
  • pydantic_ 전용 필드가 필요한 버그 수정
  • 는 속성 _field 데코레이터를 추가하고 기능을 속성으로 등록합니다. 이 기능은 Model.Model _dump() 및 fast api 응답에 포함됩니다.
  • 문서 업데이트

0.6.1

  • pydantic 설정 기본값을 피하기 위해 nullable 필드를 제외하도록 명시적으로 설정 없음(수정 #60).

0.6.0

  • Breaking: 데이터베이스에서 인스턴스 행을 삭제할 때 instance.로드()를 호출하면 이제 ValueWrack 대신 NoMatch가 증가합니다.
  • 중단: ReverseForeignKey 관계에서 추가 및 제거 호출 이제 데이터베이스 설정을 업데이트하고 fk 열에서 하위 모델을 제거합니다.
  • 의 돌파구: ReverseForeignKey 관계는 이제 ManyToMan 관계와 같은 QuerySetProxy API를 노출합니다.
  • 깨짐: ManyToMan에서 관련 모델을 쿼리하면 상위 모델에 로드된 관련 모델 목록이 지워집니다.
    • 예: post.ories.first()는 post.를 관련 모델 1개 목록으로 설정합니다 -> 먼저 반환된 모델()
    • 예 2: 게시물에 4개의 범주가 있는 경우 len(포스트.카테고리) == 4개의 호출 post.categories.limit(2).all() -> 이제 2개의 하위 프로세스만 로드됩니다. assert len(post.categories) == 2
  • 가 get_or_create, _or_create, 필드, 제외_field, 제외, 프리페치_lated 및 순서_by를 QuerySetProxy로 추가했으므로 이제 관계에서 직접 이러한 방법을 사용할 수 있습니다.
  • 문서 업데이트

0.5.5

  • UUID 열을 마이그레이션하기 위한 수정된 alembic 자동 생성 문제. sqlalchemy CHAR(32) 또는 CHAR(36)만 생성해야 합니다.
  • 이 기능이 작동하려면 사용자 __접두사='sa'를 설정해야 합니다. (sqlalchemy__접두사 옵션과 같아야 합니다. 기본값은 "sa"입니다.)

0.5.4

  • 를 사용하면 uuid_ 형식("16진수"(기본값) 또는 "문자열")을 UUID 필드에 전달하여 저장 형식을 변경할 수 있습니다. 기본적으로 필드는 16진수 형식(대시 없이 32자로 잘라짐)으로 저장되지만 형식 = '문자열'을 전달하여 36(대시 포함)을 사용하여 기존 데이터베이스 또는 기타 라이브러리를 조정할 수 있습니다.

    샘플:

    • 16진수 값 =c616ab438cce49dbbf4380d109251dce
    • 문자열 값 =c616ab43-8cce-49db-bf43-80d109251dce

0.5.3

  • 제외 매개 변수를 무시하고 사전 매개 변수를 포함하지 않는 Model.Model_dump() 메서드에서 버그를 수정했습니다.

0.5.2

  • 별도의 쿼리에서 후속 모델을 로드하는 prefetch_lated 메서드를 추가했습니다.
  • 문서 업데이트

0.5.1

  • 트래비스 대신 github 동작으로 전환
  • 문서의 배지 업데이트

0.5.0

  • 저장 상태 추가 -> ModelInstant. 속성을 사용하여 모델이 저장되었는지 확인할 수 있습니다.
    • 모델에 삽입 방법을 저장/업데이트/로드/업데이트한 후 모델 저장 create/get/first/all/get_or_create/update_or_create 방법 이후에 저장된* 모델
    • 모델은 대량_업데이트 및 대량_생성에 전달되면 저장됩니다.
    • ManyToAll 관련 개체를 추가/제거한 후 모델 저장(모델 인스턴스를 통해 자동으로 저장/삭제)
    • 모델은 자체 필드를 변경한 후 저장되지 않습니다(Model.pk 별칭으로 pk 포함).
    • ForeignKey 관련 개체를 추가/제거한 후 모델이 저장되지 않음(fk 열이 저장되지 않음)
    • 는 __init__를 사용하여 Instantiation 후 모델을 저장하지 않습니다(QuerySet.create를 사용하지 않거나 저장을 호출하기 전에).
  • 는 Model.up(**kwargs), pk가 설정되지 않은 경우 저장(), 그렇지 않은 경우 업데이트(**kwargs)를 추가합니다.
  • Extra Model.save_related(follow=False) 는 모든 관계에서 모든 관련 개체에 대해 반복하고 저장되었는지 확인합니다. 그렇지 않은 경우 각 개체에서 up()를 호출합니다.
  • 중단: 저장되지 않은(pk는 없음) 모델을 다대다 관계에 추가/제거하면 예외를 추가합니다.
  • _field를 제외한 필드에 사전 및 컬렉션을 전달할 수 있습니다.
  • _field를 제외한 필드의 사전으로 str 및 목록을 자동으로 변환합니다.
  • 중단: 중첩 모델을 대상 모델 이름 대신 연결된 외래 키 이름으로 필드 및 Excre _ 필드에 전달
  • 성능 최적화 - model, newbasemodel - 쿼리 감소 >에서 일부 속성이 모델에 캐시됩니다.
  • 사용하지 않는 관계 코드 정리
  • 선택적 성능 종속성 또는 json 추가(강력 권장)
  • 문서 업데이트

0.4.4

  • _field() 메서드를 제외하고 추가하여 필드를 SQL에서 제외합니다.
  • 리팩터 열 이름 설정(별칭)
  • 별칭이 있는 열을 정렬하는 방법 수정
  • _field를 제외한 필드에 대한 추가 테스트
  • 문서 업데이트

0.4.3

  • models.Model_dump() 및 model.Model_dump_json()에 속성을 포함합니다.

0.4.2

  • pk로만 채워진 관련 모델의 반환을 허용하도록 pydantic 모델 생성 수정

0.4.1

  • 정렬을 허용하도록 쿼리 세트에 순서 _by 메서드를 추가합니다.
  • 문서 업데이트

0.4.0

  • 는 모델 정의에서 표기법을 변경했습니다. -> 이제 이름 = ormar를 사용합니다. 이름 대신 필드() : ormar. 필드()
    • 이전 표기법은 여전히 지원되지만 더 이상 사용되지 않으며 mypy 및 pydantic py 플러그인과 같은 정적 체커에서 잘 작동하지 않습니다.
  • 프롬프트 문서를 입력하고 테스트합니다.
  • mypy도 테스트에 사용할 수 없으며 ormar 패키지만 사용할 수 있습니다.
  • 최대 _ 숫자 및 소수 _ 장소 pydantic Dec 필드를 사용하여 척도 및 정밀도 변환 수정
  • 문서 업데이트 - 종속성 추가를 위한 모범 사례
  • 유형 힌트를 더 잘 사용하기 위해 메타 클래스 및 모델 _ 필드를 리팩터합니다.
  • 설명서에 mypy 및 pydantic 플러그인 추가
  • 다대다 관계에 대한 문서 확장

0.3.11

  • 파이썬의 기본 필드 값으로 설정 서버_기본값 수정

0.3.10

  • 다른 백엔드를 사용할 때 드라이버가 설치되지 않은 예외를 방지하기 위해 포스트 그레슬링 확인

0.3.9

  • 19에서 JSON 스키마 생성 수정

  • Ormar의 Fastapi 사본에서 초기화되지 않은 ManyToMan 관계에 대한 문제를 해결했습니다. 모델
  • FastAPI 사용에 대한 문서 업데이트
  • 테스트 추가

0.3.8

  • 모든 필드에 대한 이름 매개 변수와 함께 대체 데이터베이스 열 이름을 제공할 수 있는 가능성을 추가했습니다.
  • 필드()를 사용하여 비어있는 경우 관련 ManyTo많은 필드를 선택하는 버그를 수정했습니다.
  • 문서 업데이트

0.3.7

  • 문서 게시 및 읽기 파일 업데이트

0.3.6

  • 필드() 메서드를 추가하여 데이터베이스에서 선택한 열을 제한합니다. null 가능 열만 제외할 수 있습니다.
  • 고유 열 및 제약 조건 목록이 모델 요소에 추가되어 열 목록에 고유 제약 조건을 작성합니다.
  • Char(32) 열 유형을 기준으로 UUID 필드 유형을 추가했습니다.

0.3.5

  • 여러 개체에 대한 작업을 위해 bulk_create 및 bulk_를 추가했습니다.

0.3.4

쿼리 추가 레벨 설정 방법

  • 삭제
  • 업데이트
  • 획득 또는 생성
  • 업데이트 또는 생성

0.3.3

  • 추가 필터 추가 - 시작 및 끝

0.3.2

  • 모든 필드에 옵션 매개 변수 추가 - 허용된 값을 제공된 값으로 제한

0.3.1

  • 필터에 제외를 추가했습니다.
  • MySQL 및 Postgres에 대한 테스트를 추가하고 Postgres를 수정했습니다.
  • 래퍼와 청소.

0.3.0

  • 많은 필드를 추가하고 다대다 관계를 지원합니다.