/ / Połączenie dwóch pól, aby były unikalne w Python Eve - python, eve

Kombinacja dwóch pól jest unikalna w Python Eve - python, eve

Czy w środowisku Python Eve możliwe jest spełnienie warunku, który sprawdza, czy kombinacja dwóch pól jest unikalna?

Na przykład poniższa definicja ogranicza tylko Imię i nazwisko być unikalnym dla przedmiotów w zasobie.

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
}
}

Zamiast tego istnieje sposób na ograniczenie Imię i nazwisko połączenie jest wyjątkowe?

Czy istnieje sposób na zaimplementowanie CustomValidator do tego?

Odpowiedzi:

1 dla odpowiedzi № 1

Prawdopodobnie możesz osiągnąć to, co chcesz, przeciążając _validate_unique i wdrożenie tam niestandardowej logiki, wykorzystując self.document w celu pobrania innej wartości pola.

Jednak od tego czasu _validate_unique jest wywoływane dla każdego unikatowego pola, w przeciwnym razie wykonasz swoje własne sprawdzanie poprawności dwukrotnie, raz dla firstname a następnie dla lastname. Niezbyt pożądane. Oczywiście, że nie ma wyjścia fullname pole, ale myślę, że to nie jest opcja w twoim przypadku.

Zastanawiałeś się, czy nie wybrać nieco innego projektu? Coś jak:

{"name": {"first": "John", "last": "Doe"}}

Wszystko, czego potrzebujesz, to upewnij się name jest wymagane i wyjątkowy:

{
"name": {
"type":"dict",
"required": True,
"unique": True,
"schema": {
"first": {"type": "string"},
"last": {"type": "string"}
}
}
}