UUIDField skips configured validators when writing values

Aperta
#2,407 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

@IlyaKhalafi ci sta già lavorando.

Dal 6/11/2026.

  • #2408 di @IlyaKhalafi — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
python
Ambito
database

Direzione di ricerca

Read the UUIDField implementation and compare its to_db_value behavior with field types that run configured validators. Start with a regression test for the direct conversion and database writes, including that nullable fields skip validators for None. Done means invalid UUIDs raise ValidationError on writes while valid values convert as expected; an open pull request (#2408) is already linked.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

UUIDField.to_db_value converts the value to a string without running its configured validators. This also lets invalid values through model creation, saves and queryset updates.

from uuid import uuid1
from tortoise import fields
from tortoise.exceptions import ValidationError
from tortoise.models import Model

def require_v4(value):
    if value.version != 4:
        raise ValidationError('UUID must be version 4')

field = fields.UUIDField(validators=[require_v4])
field.to_db_value(uuid1(), Model)  # returns a string without raising

Expected behavior is to run field validation before converting the value, consistent with other field types. Nullable fields should still skip validators for None.

Reproduced on current develop with Python 3.14 and SQLite. Both a direct field regression and a database-write regression fail because validation does not run.

Upstream commit 5797ac34b4a13b94b3dfc1b69aaf81d032cfcb4d.

Lingua principale
Python
Stelle
5.6k
Fork
540
Merge medio
4g 4h
PR unite (30g)
32

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di tortoise/tortoise-orm

Tutte le issue di tortoise/tortoise-orm

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.