CUSTOM_ID-----------------------ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INV00001 ---------------------- 1
INV00002 -----------------------2
INV00003------------------------3
.
.
.
i think you need INV00001 for display purposes and also i hope it does
not matter much whether you store 1 or INV00001 in the db.

in such cases why can't you follow the below approach?
------------------------------------------------------
store as 1 but display it as INV00001 (by appending 1 to 'INV0000')
when you want to search 'INV00002'  strip out the INV and convert the
other part to 2 and search for this 2 in the database.

~~
I don't know whether this is feasible to you or not but just a thought
adding to suggestion of "Will Hardy".


On Feb 3, 4:47 am, Will Hardy <e.willha...@gmail.com> wrote:
> There's no easy solution without saving the object to the database.
> Auto incrementing fields (AutoField or just id) get their value from
> the database, so they wont have one until you save. This is good
> because it prevents multiple objects ever having the same value. One
> way to do what you want is to save a new invoice to the database
> straight away when the user clicks "add new invoice" and allow them to
> edit it, but if you're using the admin site, this might not be
> straightforward.
>
> You wont need to create a new field by the way, you could simply make
> a property that uses the ID field of a model:
>
> @property
> def invoice_id(self):
>     if self.id:
>         return 'INV%d' % self.id
>
> But you wouldn't be able to search for the full INV0000001 string, you
> would have to strip the INV beforehand or create a new charfield and
> populate that on save (sounds like what you're doing)
>
> If you don't want to have such obvious incrementing values for your
> invoice numbers, you could use a perfect hash function to convert it
> to a more obscure value, likehttp://www.djangosnippets.org/snippets/1249/(I 
> wrote this snippet,
> don't worry that two people voted against it, they didn't say why... I
> have no idea... it's just a simple perfect hash function and base
> converter, and it certainly does the job it was designed to do)
>
> Cheers,
>
> Will
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to