On Sep 6, 8:38 am, kmpm <pe...@birchroad.net> wrote: > On Sep 6, 9:02 am, Mike Dewhirst <mi...@dewhirst.com.au> wrote: > > > > > > > On 6/09/2010 4:19pm, kmpm wrote: > > > > I have a project running in a manufacturing industry that is actually > > > built upon django. > > > In this I need to generate a unique serial, batch or lot number > > > (depending on what you would like to call it) that is a running number > > > from 0 to whathever for each and every day. > > > So when every day ticks over at midnight, the serial number starts at > > zero again? Does production continue across the time 00:00? Why don't > > you use a continuously increment number? > > > I don't know what the "right" thing to do is. I'm sure there will be a > > classic solution. I think I would be writing a singleton function > > nextnum() which returns the next number as required and then > > > lot_no = models.IntegerField(default=nextnum) > > > I'm not sure what would happen threadwise but a singleton would be a > > natural place to deal with thread-locking and restarting the sequence > > when the clock ticks over. > > > lot_no then gets the value prior to the save() > > > Mike > > Yes it ticks over at midnight, and no there is no production at that > time. More or less office hours only. > A singleton would be nice but as you said it's not thread safe and > won't scale nicely if we were to use multiple frontend servers or > anything like that. > There is a project called django-idmapper[1] that I just found that > might solve it by using a model that seems to be stored in shared > memory. > If running on multiple frontends that would need to be something like > memcached but I don't know about thread safety and concurrency there > either. > > [1]http://github.com/dcramer/django-idmapper
You should probably rely on your database to generate a unique incrementing ID. If you're on Postgres, you can use a sequence, and for MySQL there's some code emulating sequences here: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id (it's towards the end of the section on last_insert_id()). -- DR. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.