Django在模板排序中显示多对多-忽略?

Django在模板排序中显示多对多-忽略?,django,many-to-many,sql-order-by,Django,Many To Many,Sql Order By,我正在尝试基于多对多关系(图像/画廊与中间画廊图像模型)显示对象(图像)列表 Galleryimage还有一个名为position的附加字段,我想用它来管理模板中列出图像的顺序 我还有一个页面模型,可以选择附加一个图库 我的模型是这样的: class Page(models.Model): gallery = models.ForeignKey(Gallery, blank=True, null=True) slug = models.SlugField() title

我正在尝试基于多对多关系(图像/画廊与中间画廊图像模型)显示对象(图像)列表

Galleryimage还有一个名为position的附加字段,我想用它来管理模板中列出图像的顺序

我还有一个页面模型,可以选择附加一个图库

我的模型是这样的:

class Page(models.Model):
    gallery = models.ForeignKey(Gallery, blank=True, null=True)
    slug = models.SlugField()
    title = models.CharField(max_length=200)
    content = models.TextField()

    def __unicode__(self):
        return self.title

class Image(models.Model):
    title = models.CharField(max_length=50)
    image = models.ImageField(upload_to='images')

    def __unicode__(self):
        return self.title

class Gallery(models.Model):
    title = models.CharField(max_length=50)
    images = models.ManyToManyField(Image, through='Galleryimage')

    def __unicode__(self):
        return self.title

class Galleryimage(models.Model):
    image = models.ForeignKey(Image)
    gallery = models.ForeignKey(Gallery)
    position = models.IntegerField()

    class Meta:
        ordering = ['position']
def detail(request, page_id):
    p = get_object_or_404(Page, pk=page_id)
    return render_to_response('detail.html', {'page': p},
                          context_instance=RequestContext(request))
我正在检索视图中的页面模型,如下所示:

class Page(models.Model):
    gallery = models.ForeignKey(Gallery, blank=True, null=True)
    slug = models.SlugField()
    title = models.CharField(max_length=200)
    content = models.TextField()

    def __unicode__(self):
        return self.title

class Image(models.Model):
    title = models.CharField(max_length=50)
    image = models.ImageField(upload_to='images')

    def __unicode__(self):
        return self.title

class Gallery(models.Model):
    title = models.CharField(max_length=50)
    images = models.ManyToManyField(Image, through='Galleryimage')

    def __unicode__(self):
        return self.title

class Galleryimage(models.Model):
    image = models.ForeignKey(Image)
    gallery = models.ForeignKey(Gallery)
    position = models.IntegerField()

    class Meta:
        ordering = ['position']
def detail(request, page_id):
    p = get_object_or_404(Page, pk=page_id)
    return render_to_response('detail.html', {'page': p},
                          context_instance=RequestContext(request))
最后,我在模板中显示图像,如下所示:

{% block images %}
{% if page.gallery %}
{% for image in page.gallery.images.all %}
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
{% endif %}
{% endblock %} 
{%block images%}
{%if page.gallery%}
{%用于page.gallery.images.all%中的图像}
{%endfor%}
{%endif%}
{%endblock%}
所有的图像都按预期显示,但是,无论我做什么,顺序似乎总是一样的

谁能给我一个正确的方向

谢谢你的建议


谢谢。

您是否尝试在图像模型中设置订购选项?我知道您在直通关系表中设置了位置,但是通过将其移动到图像模型(如果可能?)并在该模型上设置顺序,它将起作用

class Image(models.Model):
    title = models.CharField(max_length=50)
    image = models.ImageField(upload_to='images')
    position = models.IntegerField()

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['position']

你能解释一下“按预期显示”和“不管我做什么”的意思吗。您希望更改图像顺序的操作是什么?