Obecnie tworzę projekt, który wymaga dużej zbiorowej inteligencji. Każdy użytkownik odwiedzający witrynę otrzymuje unikalny profil, a dane są później wykorzystywane do obliczania najlepszych dopasowań dla siebie i innych użytkowników.Automatyczne pole przyrostowe Django BigIntegera jako klucz podstawowy?
Domyślnie Django tworzy pole INT (11) id
do obsługi kluczy podstawowych modeli. Obawiam się, że jest to bardzo szybko przepełnione (tj. ~ 2,4b urządzenia odwiedzające stronę bez wcześniejszej konfiguracji plików cookie). Jak mogę go zmienić, aby był reprezentowany jako BIGINT w MySQL i long() wewnątrz samego Django?
Znalazłem mogę wykonać następujące czynności (http://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield):
class MyProfile(models.Model):
id = BigIntegerField(primary_key=True)
Ale czy jest jakiś sposób, aby to autoIncrement, jak zwykle id
polach? Dodatkowo, czy mogę uczynić go niepodpisanym, aby uzyskać więcej miejsca do wypełnienia?
Dzięki!
myślę, że to nie pomoże, jak Django nadal szuka identyfikatora do normalnej int, który jest wciąż zbyt mała. – letoosh
Wcale nie, chodzi o to, jak id jest przechowywany w bazie danych. (Long) typ całkowity w pythonie ma precyzję "nieograniczoną". Możesz także sprawdzić, w jaki sposób BigIntegerField jest wbudowany w Django 1.2 - dziedziczy bezpośrednio IntegreField, bez zmiany wewnętrznego typu, aby zapisać wartość (co w tym przypadku jest int). – dzida
Masz rację, moja zła ... – letoosh