Hello,

I have the same problem with entry_set in my related_manager.

On 8 Lis, 05:32, John M <[EMAIL PROTECTED]> wrote:
> DR,
>
> Now I have a new problem.  When I use this as a related_manager
> (Report.objects.all()[0].task_set.accomplishments()) it returns all
> the accomplishments.  I've even added the use_for_related_fields=True
> in the manager.  The all() (default) call seems to work fine, but the
> others done.
>
> Any ideas?
>
> Thanks
>
> John
>
> On Nov 7, 11:47 am, Daniel Roseman <[EMAIL PROTECTED]>
> wrote:
>
> > On Nov 7, 7:13 pm, John M <[EMAIL PROTECTED]> wrote:
>
> > > I wanted to get some feedback on how I'm using custom model managers.
>
> > > I've put all my queries into one manager, each in a different method.
> > > Is this the right way to go?
>
> > > So for example:
>
> > > CHOICES_TASK = (
> > >                         ("NO", "None"),
> > >                         ("GR", "Green"),
> > >                         ("YL", "Yellow"),
> > >                         ("RD", "Red"),
> > >                 )
>
> > > class TaskManager(models.Manager):
> > >         use_for_related_fields = True
>
> > >         # Task.objects.all()
> > >         def get_query_set(self):
> > >                 return super(TaskManager, self).get_query_set()
>
> > >         # Task.milestones()
> > >         def Milestones(self):
> > >                 return super(TaskManager,
> > > self).get_query_set().filter(milestone=True)
>
> > >         def Accomplishments(self):
> > >                 return super(TaskManager,
> > > self).get_query_set().filter(milestone=False).filter(completed=True)
>
> > >         def Nextsteps(self):
> > >                 return super(TaskManager,
> > > self).get_query_set().filter(milestone=False).filter(completed=False)
>
> > > class Task(models.Model):
> > >         report = models.ForeignKey(Report)
> > >         name = models.CharField(max_length=50)
> > >         started = models.BooleanField(default=False)
> > >         status = models.CharField(max_length=20, choices=CHOICES_TASK,
> > > default="NO")
> > >         completed = models.BooleanField(default=False)
> > >         duedate = models.DateField(blank=True, null=True)
> > >         milestone = models.BooleanField(default=False)
>
> > >         # Managers
> > >         objects = TaskManager()
> > >         milestones = TaskManager().Milestones
> > >         accomplishments = TaskManager().Accomplishments
> > >         nextsteps = TaskManager().Nextsteps
>
> > >         def __unicode__(self):
> > >                 return self.name
>
> > There's nothing wrong with the general idea - that's how I do it
> > myself, although the official docs say to use multiple managers and
> > override get_query_set on each one. A couple of comments on your
> > implementation though:
>
> > 1. There's no point in defining a get_query_set model simply to pass
> > to super. If you don't define it at all, it will just inherit from the
> > parent class anyway, which is exactly the same as what happens in your
> > version, so you may as well save two lines of code.
>
> > 2. The convention in Python/Django is to have all lower case names for
> > functions and methods - so it should be milestones, accomplishments,
> > etc.
>
> > 3. I don't think there's any point in defining all the extra manager
> > attributes that you have. Leave objects as TaskManager, then you can
> > do things like:
> > Task.objects.milestones()
> > Task.objects.accomplishments().filter(started=False)
> > or whatever.
>
> > --
> > 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-users@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-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to