I'm wondering if it's possible to apply ordering to a ManyToMany
relationship by using a `position` attribute on the join model.  A
classic example (photo gallery) is probably the best way to illustrate
this:

class Photo(models.Model):
    image = models.ImageField(upload_to="photos")

class Gallery(models.Model):
    name = models.CharField(max_length=100)
    photos = models.ManyToManyField(Photo, through='GalleryPhoto')

class GalleryPhoto(models.Model):
    gallery = models.ForeignKey(Gallery)
    photo = models.ForeignKey(Photo)
    position = models.IntegerField(default=0)

    class Meta:
        ordering = ('position',)

(Also at http://dpaste.com/hold/165618/)

I want to attach photos with a gallery, like this:

>>> GalleryPhoto.objects.create(photo=photo1, gallery=some_gallery, position=1)
>>> GalleryPhoto.objects.create(photo=photo2, gallery=some_gallery, position=2)

And then have the photos retrievable through the gallery *according to
the position attribute* on the GalleryPhoto, like so:

>>> gallery.photos.all()
[photo1, photo2]


The simplest fix would be to add create a `get_photos` method on the
Gallery which does a query for it's photos, but I'd rather stick to
straight Django models if at all possible.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected].
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