I seem to be missing something. Why is it that you cannot just write a BitMaskField yourself outside of Django?
I thought that it might have been that we don't have __any and __all lookup types, but it seems you can override get_db_prep_lookup in a field, so that's not an issue. And if there do seem to be hurdles in creating your own BitMaskField (perhaps in syncdb?), then that seems like a limitation in the ORM. Though, everything else I've tried with the ORM recently has shown it to be very flexible and I wouldn't expect this to be any different. -Mike On Fri, Dec 5, 2008 at 10:11 AM, George Vilches <[EMAIL PROTECTED]> wrote: > > Unfortunately, Malcolm has shot this down in the past as something > that would be included in Django: > > > http://groups.google.com/group/django-developers/browse_thread/thread/4cc529b95c9efe20/439e90ed09cbcf2e > > Theoretically, you can do this with a Q object, although I have not > tried since Django 1.0 was released. I definitely have a use for this > as well, and as can be seen from my original post, every DB engine > that Django includes a driver for has support for at very least the & > and | operators. > > gav > > > On Dec 5, 2008, at 8:20 AM, [EMAIL PROTECTED] wrote: > > > > > I would use this. The one thing I don't see covered in your example is > > setting flags. I would look at allowing a list or tuple of integers. > > Using your example: > > > > p = Person(name='John Doe', flags=[PeopleFlags.Male, > > PeopleFlags.Employed]) > > > > - Justin > > > > On Dec 4, 5:16 pm, "Craig Kimerer" <[EMAIL PROTECTED]> wrote: > >> Apologies if this has been asked already and I have missed it in > >> searching, > >> but is there any interest in taking a patch for a BitmaskField? > >> > >> Given the following (albeit stupid) example to show some usages > >> that would > >> be nice to have on a bitmask field. I should note in the examples > >> below, > >> the names I have chosen I am not sold on, but work well enough to > >> describe > >> what is going on in this example. > >> > >> class Person(models.Model): > >> name = models.TextField() > >> flags = models.BitmaskField() > >> > >> class PeopleFlags(object): > >> NoFlag = 0 > >> Male = 1 > >> Female = 2 > >> Student = 4 > >> Unemployed = 8 > >> Employed = 16 > >> > >> Example filter API: > >> > >> Finding all unemployed students: > >> Person.objects.filter(flags__all=[PeopleFlags.Unemployed, > >> PeopleFlags.Student]) > >> > >> Finding all females who are students or unemployed > >> Person > >> .objects > >> .filter(flags__is=PeopleFlags.Female).filter(flags__any=[Peop > >> leFlags.Student,PeopleFlags.Unemployed]) > >> > >> Obviously there are some special cases, like you couldn't use the > >> same logic > >> if someone wanted to find 'All people with NoFlags'. By default 0 > >> would > >> have to be special cased for '= 0' instead of '& 0'. > >> > >> I dont have the code currently written, but I am willing to put > >> some work > >> into it if this is a feature that people (other than me) think > >> would be > >> useful. > >> > >> Craig > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---