Dodanie unikalnej kolumny do istniejącej tabeli w Django

Czasami zachodzi potrzeba dodania nowej, unikalnej kolumny do istniejącego już modelu w Django. Niestety jeśli w tabelce istnieją już wpisy, otrzymamy błąd. W takim przypadku, dodanie nowej kolumny należy podzielić na 3 kroki. Stworzenie kolumny bez indeksu unikalnego, wygenerowanie unikalnych wartości, dodanie indeksu. Możemy to zrobić używając standardowego mechanizmu migracji, który znajduje się w Django. Zacznijmy od przykładowego kodu:

W przykładzie do modelu Event dodajemy kolumnę key która zawiera unikalny ciąg znaków. W pierwszym kroku tworzymy nową kolumnę. W kroku 2 przekazujemy do mechanizmu funkcje Pythona. Jako parametry otrzyma ona obiekty za pomocą których będzie mogła wykonywać operacje na bazie danych. W przykładowej funkcji wyciągamy wszystkie wiersze które znajdują się w bazie. Przechodzimy pojedynczo przez każdy element, generujemy losowy ciąg znaków i zapisujemy zmiany w bazie. Można przyjąć dowolną strategię generowania unikalnej wartości, dla liczb może to być po prostu kolejny numer. Gdy już mamy unikalne wartości w każdym wierszu tabelki, możemy na nią nałożyć indeks unikalny (krok 3).

Leave a Reply

Your email address will not be published. Required fields are marked *