2011-12-08 7 views
8

Czy istnieje sposób ustawić licznik wartości id dla obiektów w Django?Czy istnieje sposób na ustawienie wartości id nowych obiektów Django na określoną wartość?

Na przykład mam zestaw obiektów "Wideo", które są obecnie na id = 100 następnym razem, gdy utworzę obiekt typu "Wideo" to będzie id = 101. Jednak chciałbym, aby wszystkie nowo utworzone obiekty wideo zaczynały się od id = 2000. czy jest jakiś sposób na zrobienie tego?

+0

Brzydkim hackiem byłoby stworzenie urządzenia, które tworzy fałszywy wiersz w bazie danych o ID = 1999. Następny wygenerowany automatycznie identyfikator to 2000. –

+0

naprawdę? więc auto_increment zaczyna się od maksimum w db? to znaczy. nie próbujesz wypełnić żadnych dziur? Nie zdawałem sobie z tego sprawy. to jest w porządku za to, co muszę zrobić. Dzięki! –

+0

zobacz moją odpowiedź poniżej. –

Odpowiedz

3

Możesz stworzyć urządzenie, które utworzy fałszywy wiersz w bazie danych o ID = 1999. Następny wygenerowany automatycznie identyfikator to 2000.

To rozwiązanie prawdopodobnie zależy od twojego zaplecza bazy danych do "wznowienia od miejsca, w którym zostało przerwane". Przynajmniej to robią MySql i PostgreSQL (domyślam się, że to robi każdy serwer pocztowy).

Istnieje również rozwiązanie dla MySQL tylko (o ile wiem), który składa się z SQL ALTER TABLE tbl AUTO_INCREMENT = 100;

które nie byłyby już w bazie agnostyk, choć.

9

Można określić identyfikator podczas tworzenia obiektu, tak długo, jak to zrobić przed zapisaniem:

new = Video() 
new.id = 2000 
new.save() 

Można po prostu wyliczyć ID chciałeś za każdym razem - choć nie jestem pewien co źle z polami automatycznego identyfikatora Django;)

+1

Myślę, że OP chciał zapytać, czy istnieje sposób na skonfigurowanie w Django wartości początkowej dla sekwencji dla auto-id. –

Powiązane problemy