[Aktualizacja: Zmieniono tytuł pytanie być bardziej szczegółowe]Jak zrobić auto wypełnione i autoinkrementacja pola w Django administratora
Przepraszam, jeśli nie wyraziłem się pytanie bardzo dobrze, mogę” t dowiedzieć, jak to zrobić:
class WhatEver():
number = model.IntegerField('Just a Field', default=callablefunction)
...
Gdzie callablefunction
robi to zapytanie:
from myproject.app.models import WhatEver
def callablefunction():
no = WhatEver.objects.count()
return no + 1
Chcę automatycznie napisać kolejny numer, A Nie wiem, jak to zrobić.
Mam błędy z callablefunction
stwierdzające, że nie można zaimportować modelu i myślę, że musi być łatwiejszy sposób na zrobienie tego. Nie trzeba nawet tego używać, ale nie wiem, jak to zrobić, używając numeru pk.
Mam google na ten temat i jedyne co znalazłem było użyć metody save() za auto zwiększając liczbę ... ale chciałem pokazać go w <textfield>
przed zapisaniem ...
Co byś zrobił?
Czy jesteś pewien, że ten kod będzie działał również z równoczesnymi transakcjami? Co się dzieje, gdy dwie prośby jednocześnie wykonują 'count()' w tym samym czasie i później zapisują tę samą wartość? – vdboor
To prawda ... w moim przypadku użycia nie ma znaczenia, ponieważ nigdy nie będzie dwóch żądań na raz ... ale nawet wtedy muszę wymyślić lepszy sposób realizacji tego. Dzięki za radę! :) –
Byłem w stanie wykonać coś podobnego do tego, co chcę, aby to pole: 'id = models.IntegerField (primary_key = True, puste = True)' Jedyne co jest to, że nie jest automatycznie wypełnione, ale rozwiązuje problem równoczesnych żądań (myślę) –