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 -~----------~----~----~----~------~----~------~--~---