Chcę zachować model Django z unikalnym identyfikatorem dla każdej kombinacji opcji w modelu. Chciałbym wtedy móc zaktualizować model o nowe pole i nie mieć poprzedniej zmiany unikalnego identyfikatora. Identyfikatory mogą być hash lub integer lub cokolwiek. Jaki jest najlepszy sposób, aby to osiągnąć?Używanie Django ORM, Jak utworzyć niepowtarzalny skrót dla wszystkich możliwych kombinacji
class MyModel(models.Model):
WINDOW_MIN = 5
WINDOW_MAX = 7
WINDOW_CHOICES = [(i,i) for i in range(WINDOW_MIN - 1, WINDOW_MAX - 1)]
window = models.PositiveIntegerField('Window', editable=True, default=WINDOW_MIN, choices=WINDOW_CHOICES)
is_live = models.BooleanField('Live', editable=True, default=False)
unique_id = ....
Biorąc pod uwagę powyższy przykład, będzie 3 * 2 == 6 unikalnych identyfikatorów. Jeśli dodaję inne edytowalne pole logiczne, nie chcę zmieniać poprzednich unikalnych identyfikatorów, ale chcę wygenerować nowy unikalny identyfikator dla nowego pola boolowskiego.
Proces myślenia za tym jest parametrem w MyModel zdefiniować wejścia do funkcji, których wyniki są przechowywane w innym Django modelu MyResultModel
przez unique_id i nazwę modelu. Uzasadnieniem jest to, że istnieje wiele wariantów MyModel
, z których każdy ma własne unikalne kombinacje, które są regularnie aktualizowane, ale zestaw wyników w MyResultModel jest taki sam dla MyModel1 na MyModelN. Idealnie chciałbym, aby identyfikator unique_id's był automatycznie generowany. Innymi słowy kluczem do zestawu wyników przechowywanego w MyResultModel
jest nazwa_modelu (MyModel) i unikalny_id. Chcę sanely zarządzać tak wielu (MyModel1, ... MyModelN) do jednej relacji (MyResultModel).
class MyResultModel(models.Model):
unique_id = ...
model_name = models.CharField(max_length=200, default='', blank=False) # Points to a Django Model ex MyModel
result1 = ...
result2 = ...
To brzmi jak [XY problemu] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) do mnie. Co próbujesz osiągnąć, robiąc to? – Chris
@Chris Dodam więcej informacji o tym, dlaczego uważam, że powyższe ma sens. – pyCthon
Zgadzam się z komentarzem @Chris, nadal spróbuję odpowiedzieć. –