2011-06-20 14 views
9

Używam szablonów CherryPy, Mako i SQLAlchemy w aplikacji internetowej. Pochodzę z tła Ruby on Rails i próbuję ustawić poprawność danych dla moich modeli. Nie mogę znaleźć najlepszego sposobu na zapewnienie, powiedzmy, że pole "nazwa" ma wartość, gdy inne pole ma wartość. Próbowałem użyć SAValidation, ale to pozwoliło mi utworzyć nowe wiersze, w których wymagana kolumna była pusta, nawet gdy użyłem validates_presence_of w kolumnie. Patrzyłem na WTForms, ale wydaje się, że wiąże się to z dużym powieleniem kodu - już mam ustawioną klasę modelu z kolumnami w tabeli, dlaczego muszę powtórzyć wszystkie te kolumny ponownie, aby powiedzieć "hej to ktoś potrzebuje wartości "? Pochodzę ze sposobu myślenia "skinny controller, fat model" i szukałem metod podobnych do Railsów w moim modelu, takich jak validates_presence_of lub validates_length_of. Jak powinienem sprawdzać poprawność danych, które otrzymuje mój model, i upewnić się, że niepowodzenie Session.add/Session.merge kończy się niepowodzeniem?sprawdzanie poprawności danych dla modeli deklaratywnych SQLAlchemy

Odpowiedz

-4

Ostatecznie skończyłem używać WTForms.

+0

Jak obejść duplikat kodu? Czy możesz wyjaśnić nieco, w jaki sposób go używasz? Jestem również programistą rails, ale chciałbym rozwinąć aplikację z kolbą + sqlalchemy ... Widziałem WTForms, ale wydaje mi się to trochę obce, ponieważ zawsze przechowujesz walidację w widoku ... podczas gdy czuje się bardziej odpowiedni (i bardziej suchy) do przechowywania go w modelu. – jbwiv

10

Zapoznaj się z dokumentacją dodawania validation methods. Możesz po prostu dodać metodę "aktualizacji", która przyjmuje polecenie POST, upewnia się, że wymagane klucze są obecne, i używa udekorowanych walidatorów, aby ustawić wartości (podnosząc błąd, jeśli coś jest nie tak).

+1

Metody sprawdzania poprawności działają tylko dla jednego pola naraz. Oczywiście oznacza to walidację, która zależy od relacji między polami. –

2

Napisałem SAValidation w celu uniknięcia duplikacji kodu, jeśli chodzi o sprawdzanie danych modelu. Działa to dobrze dla nas, przynajmniej dla naszych przypadków użycia.

W naszych testach mamy examples of the model's setup i testy pokazujące działanie sprawdzania poprawności.

Powiązane problemy