Je suis en train de construire un projet qui implique beaucoup d'intelligence collective. Chaque utilisateur visitant le site Web obtient un profil unique et leurs données sont ensuite utilisées pour calculer les meilleurs résultats pour eux-mêmes et pour les autres utilisateurs. Par défaut, Django crée un champ INT (11) id
pour gérer les clés primaires des modèles. Je suis préoccupé par ce survol très rapidement (c'est-à-dire ~ 2.4b périphériques visitant la page sans cookie préalable mis en place). Comment puis-je le changer pour être représenté comme BIGINT dans MySQL et long() dans Django lui-même?Champ Django BigInteger à incrémentation automatique en tant que clé primaire?
que j'ai trouvé que je pouvais faire ce qui suit (http://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield):
class MyProfile(models.Model):
id = BigIntegerField(primary_key=True)
Mais est-il un moyen de le rendre auto-incrémentation, comme les champs habituels id
? De plus, puis-je le rendre non signé afin d'avoir plus d'espace à remplir?
Merci!
Je pense que ce ne serait pas utile, comme Django serait encore mis ids en int normal, ce qui est encore trop faible. – letoosh
Pas du tout, le point ici est comment id est stocké sur la base de données. Le type entier (long) en python a une précision 'illimitée'. Vous pouvez également vérifier comment BigIntegerField est implanté dans Django 1.2 - il hérite directement d'IntegreField, sans changer de type interne pour stocker la valeur (qui est int dans ce cas) – dzida
Vous avez raison, mon mauvais ... – letoosh