Auto-Inkrement-Wert in Django mit Bezug auf das vorhergehende
Ist es ein Weg, um ein autoincrement-Feld mit Bezug auf die vorherigen...e.g, wenn der Vorherige Datensatz den Wert 09-0001, dann den nächsten Datensatz zugewiesen werden soll, 09-0002 und so...Ideen? Ich denke das überschreiben der Methode speichern, aber wie genau bin ich mir nicht so sicher
InformationsquelleAutor | 2009-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Django lassen Sie nicht mehr als ein AutoField in ein Modell, und Sie bereits einen für Ihre Primärschlüssel. So werden Sie zu überschreiben, speichern Sie und wird wahrscheinlich benötigen, um sich wieder an den Tisch, um herauszufinden, was zu erhöhen.
Etwas wie dieses:
Beachten Sie, dass ohne irgendeine Art von sperren in Ihre save-Methode können Sie in einer concurrency-problem (zwei threads versuchen, die zum speichern der gleichen Werte im code und Anzahl).
top = Product.objects.select_for_update(nowait=True).order_by('-code','-number')[0]
Ja, verwenden Sie
select_for_update()
, aber stellen Sie sicher, dass Ihr RDBMS unterstützt sperren auf Zeilenebene erste! (die neuesten MySQL und Postgres).InformationsquelleAutor Seth
AutoField ist das Feld Typ, der Django verwendet für das Modell base class', 'id' Eigenschaft, aber Sie können es verwenden, für zusätzliche autoincremented Felder.
Ich glaube nicht, dass Sie tun können, alle Formatierungen wie in deinem Beispiel, aber ein guter Ansatz wäre, um eine benutzerdefinierte Feldtyp, der überschreibt die save () - Methode zum ausführen der gewünschten Formatierung.
Nur eine AutoField pro Modell ist derzeit erlaubt in Django und es ist für die primäre Feld.
InformationsquelleAutor pjbeardsley
in SQL:
In Django:
Wenn gespeichert, die
code
wird automatisch erhöht.InformationsquelleAutor rex