Índice
Uma vez que o modelo e tudo relacionado a ele estejam estabelecidos, o próximo aspecto a levar em consideração é como os diferentes campos interagem com o banco de dados.Quando falamos sobre o comportamento do banco de dados, nos referimos à maneira como devemos ver como os dados são preparados para serem armazenados, a maneira como fazemos comparações com os tipos de dados de Pitão com os quais seus valores são representados em nosso aplicativo em Django.
db_type (self, connection)
Este método raramente é sobrescrito por classes e subclasses do aplicativo, ele retorna uma string contendo dados específicos do banco de dados que controlam como as colunas de certos campos são criadas.
É importante mencionar que o valor retornado com este método é particular para o Processo interno banco de dados usado na aplicação, portanto, se decidirmos usá-lo em projetos com back-ends de banco de dados diferentes, devemos obter o valor da conexão usando connection.settings_dict ['ENGINE']
Vamos ver na imagem a seguir como podemos traduzir em código o uso básico desse método:
Ao analisar o código, vemos que se o mecanismo de banco de dados é postgreSQL vamos retornar um valor para o campo, diferente de se for outro mecanismo, como MySQL, para que possamos ver um pequeno exemplo da utilidade desse método.
get_prep_value (self, value)
Este é um método que serve de base para outros métodos que devem preparar os dados para uso pelo banco de dados.
Na maioria dos casos, a conversão de objetos python para dados mais simples que podem ser transferidos para o banco de dados não representam um grande problema e podemos usar a conversão padrão, no entanto, quando queremos fazer conversões mais complexas, como um tipo de data, podemos usar este método para cuidar desse trabalho, no gráfico a seguir, temos uma maneira de conseguir isso que descrevemos.
No exemplo, ao definir um tipo de campo DurationField nós substituímos o método get_prep_value () para que ele pegue o objeto de data e o transforme em valores decimais para poder usá-lo no banco de dados sem maiores complicações.
get_db_prep_value (próprio, valor, conexão, preparado = Falso)
Existem casos em que a nossa aplicação roda em mais de um motor de base de dados, pois este método permite-nos preparar os dados a partir do motor, graças ao connection.settings_dict ['ENGINE'] podemos incorporar diferentes casos dependendo do motor.
Um exemplo é quando trabalhamos com postgreSQL, este motor pode tratar os objetos de data diretamente, então se detectarmos que é isso, podemos passar o valor diretamente, vamos ver no exemplo abaixo como combinamos este método com o anterior para obter um resultado mais robusto:
Com isso finalizamos o tutorial, sabendo que podemos controlar o comportamento do banco de dados em Django usando os métodos de preparação dos dados dos campos de um modelo.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo