P.S. id == 6 disappears in ascending and id == 3 disappears in descending. It's not a surprise that id == 5 is duplicated because it is the only Listing__book which has a relationship with two courses, the rest have a relationship with only one. That part does look suspicious to me though, as if the duplicate id "swallowing up" the missing records. I have no clue why though... hope these details help clarify my problem.
On Nov 26, 1:31 pm, David <davidkazuh...@gmail.com> wrote: > When I order over a ManyToMany relationship, certain records will not > appear. The record which disappears changes depending on the order by > which I sort it. Specifically: > > >>> Listing.objects.order_by("book__courses") > > gives me Listings with id's (5, 1, 3, 5, 2, 4), and > > >>> Listing.objects.order_by("-book__courses") > > gives me Listings with id's (6, 4, 5, 2, 5,1) > > There is nothing wrong with the ordering. The problem is that a record > is disappearing in the ordering process. My pertinent models are > below. Any clues? > > ------------------------------------------------------- > class Course(models.Model): > """ > Basic course data > """ > division = models.CharField(max_length=5) > number = models.CharField(max_length=4) > title = models.CharField(max_length=250) > > class Meta: > ordering = ('division', 'number') > > def code(self): > return "%s %s" % (self.division, self.number) > > def __unicode__(self): > return self.code() > > class Book(models.Model): > """ > Information on a book (as opposed to a particular copy of it) > The attributes should be self-explanatory > """ > title = models.CharField(max_length=250) > author = models.CharField(max_length=70) > barcode = models.CharField(max_length=50) > edition = models.PositiveSmallIntegerField() > courses = models.ManyToManyField(Course) > > def __unicode__(self): > return self.title > > def course_codes(self): > """ > returns a list of courses in the form > course1, course2, course3 > """ > course_list = "" > for course in self.courses.all(): > course_list += "%s, " % course.code() > # [:-2] takes off the trailing comma and space > return course_list[:-2] > def title_list(self): > return self.author > > class Listing(models.Model): > """ > For when a student lists a particular copy of a book. > Keeps track of > * when and who listed (is selling) it > * if and who is currently holding it > * when it was last put on hold > * when it finally got sold > * whether the listing is flagged for deletion or not > """ > STATUS_CHOICES = ( > (u'F', u'For Sale'), > (u'M', u'Missing'), > (u'O', u'On Hold'), > (u'P', u'Seller Paid'), > (u'S', u'Sold'), > (u'T', u'To Be Deleted'), > (u'D', u'Deleted'), > ) > > book = models.ForeignKey(Book) > list_date = models.DateTimeField('Date Listed', auto_now_add=True) > seller = models.ForeignKey(User, related_name="selling") > sell_date = models.DateTimeField('Date Sold', blank=True, > null=True) > holder = models.ForeignKey(User, related_name="holding", > blank=True, null=True) > hold_date = models.DateTimeField('Date Held', blank=True, > null=True) > price = models.DecimalField(max_digits=7, decimal_places=2) > status = models.CharField(max_length=1, choices=STATUS_CHOICES) -- 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.