Big domaine entier dans les modèles django
En bref: Comment spécifier un type de données BIGINT dans Django modèles?
Dans un projet en cours, je suis en train de faire à l'aide de Django (0.97-svn version), j'ai tous les champs de type entier dans tous les modèles définis comme IntegerField. Il a travaillé impeccablement pendant le cycle de développement où j'ai été en utilisant SQLite pour la DB backend. Cependant, dès que j'ai roulé hors de MySQL, j'ai remarqué que pour l'un des IntegerFields, MySQL a été troncature des données---apparemment, pour des raisons encore inconnu pour moi, SQLite n'ai pas à me plaindre. J'ai regardé le schéma et ont constaté que l'IntegerField dans Django est représenté comme un INT(11) dans MySQL. Naturellement, la raison MySQL a été tronquer les données, car les données de plus de 11 chiffres en longueur. Pour contourner le problème, j'ai dû mettre à jour manuellement la colonne, dans ce cas, être un BIGINT(20). Django et MySQL coexister pacifiquement avec qui. Mais à chaque fois que je réinitialiser l'application dans laquelle repose le modèle contenant que BIGINT, Django crée à nouveau comme un INT(11). J'ai regardé Django docs, et rien trouvé. Ai-je oublié quelque chose?
Grâce.
source d'informationauteur ayaz
Vous devez vous connecter pour publier un commentaire.
SQLite ne se plaignent jamais. il utilise 'manifeste tapant', qui est, les valeurs de type, pas les colonnes. Il vous permet de stocker bigtext sur un smallint collumn, ou ce que vous voulez! (sauf si vous définissez un nombre entier de clé primaire, où il utilise un entier de 64 bits).
c'est une fonctionnalité très pratique, mais il fait une SQLite mauvais choix pour le développement de si vous allez déployer avec un autre moteur.
pour l'utilisation d'un BIGINT, vous devez créer un champ personnalisé de classe. malheureusement, cette partie a changé sur Django 1.0, donc vous pourriez avoir à le réécrire si/lorsque vous mettez à jour.
BigIntegerField a été ajoutée dans l'ensemble de modifications 11887, 2009-12-17 09:10:38 et est partie de Django 1.2 et versions plus récentes.
Essayer un DecimalField.