Nel framework Python Eve, è possibile avere una condizione che controlli la combinazione di due campi per essere univoci?
Ad esempio la seguente definizione limita solo nome di battesimo e cognome essere unico per gli articoli nella risorsa.
people = {
# "title" tag used in item links.
"item_title": "person",
"schema": {
"firstname": {
"type": "string",
"required": True,
"unique": True
},
"lastname": {
"type": "string",
"required": True,
"unique": True
}
}
Invece, c'è un modo per limitare nome di battesimo e cognome combinazione per essere unica?
O c'è un modo per implementare un CustomValidator per questo?
risposte:
1 per risposta № 1Probabilmente puoi ottenere quello che vuoi sovraccaricando il _validate_unique
e implementando la logica personalizzata lì, approfittando di self.document
per recuperare l'altro valore di campo.
Tuttavia, da allora _validate_unique
viene chiamato per ogni campo unico, si finirebbe per eseguire la convalida personalizzata due volte, una volta per firstname
e poi per lastname
. Non proprio desiderabile. Ovviamente la via d'uscita di wasy si sta configurando fullname
campo, ma immagino che "non è un'opzione nel tuo caso.
Hai mai pensato di optare per un design leggermente diverso? Qualcosa di simile a:
{"name": {"first": "John", "last": "Doe"}}
Allora tutto ciò che ti serve è assicurarti che name
è obbligatorio e unico:
{
"name": {
"type":"dict",
"required": True,
"unique": True,
"schema": {
"first": {"type": "string"},
"last": {"type": "string"}
}
}
}