Pergunta

Esta é a única maneira de criar validação do modelo personalizado? Para fazê-lo utilizando os formulários? E se eu quiser para enviar dados para o banco de dados através de outras formas de meios?

Foi útil?

Solução

Atualmente Django não fornece qualquer validação de nível modelo (além básico "NOT NULL", "único" e validações de comprimento). Este está na lista TODO mas muito provavelmente não vai caber próxima versão 1.1.

Você pode executar tarefas relacionadas validação no método save() de seu sinal modelo ou uso before_save (levantando exceção no manipulador de sinal fará com que a transação estar de volta enrolada).

Outras dicas

A validação do modelo estará disponível em breve no Django versão 1.2. Ele está disponível agora se você usar uma corrente Django svn checkout do tronco.

Vários métodos clean estão agora disponíveis. Consulte http://docs.djangoproject.com/en/dev/ref / modelos / instâncias / # id1 para mais detalhes.

Em geral, você deve ser capaz de lidar com o que você quer através da construído em tipos de campos e suas opções ou o meta de modelo opções . Você também pode substituir o método Save para executar a validação / saneamento. Se isso não for suficiente, você pode criar seu próprio tipo de campo .

O problema é que não há nenhuma boa o comportamento esperado. O que deve acontecer? Caso uma exceção ser levantada? Os campos são realmente só uma abstração no nível de banco de dados, por isso não deve haver mais informações lá do que as necessidades de banco de dados para saber.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top