Ich arbeite mit einer API, die möchte, dass ich opake "Referenz-IDs" für Transaktionen mit ihrer API erzeuge, mit anderen Worten, eindeutige Referenzen, die Benutzer nicht erraten oder ableiten können Weg. (Ist die richtige Englisch ‚schließen‘?)Erstellen von Django-Objekten mit einem zufälligen Primärschlüssel
Dies ist, was ich zusammen zur Zeit gehackt haben:
randomRef = randint(0, 99999999999999)
while Transaction.objects.filter(transactionRef = randomRef).count():
randomRef = randint(0, 99999999999999)
Transaction.objects.create(user=user, transactionRef=randomRef, price=999)
leider meine Datenbank scheint Transaktionen zur Zeit zu fehlen. Ich habe festgestellt, dass meine Methode nicht besonders threadsicher ist (sagen wir, dass ich denselben django-Code auf mehreren mod_wsgi-Apache-Threads verwende, sie könnten alle denselben randomRef erzeugen!)
Hat jemand einen besseren Trick? Zufalls-Primärschlüssel für mich generieren?
Ja, "infer" ist in Ordnung. – derekerdmann