我正在尝试显示基于多对多关系的对象列表(图像)(带有中间Galleryimage模型的图像/图库)。
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))
最后,我正在模板中显示图像:
{% block images %}
{% if page.gallery %}
{% for image in page.gallery.images.all %}
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
{% endif %}
{% endblock %}
图像全部按预期显示,但无论我做什么,顺序似乎总是相同。
有人能给我一个正确方向的推动吗?
任何建议表示赞赏。
感谢。
答案 0 :(得分:2)
您是否尝试在图像模型中设置排序选项?我知道你在通过关系表中设置了位置,但是通过将它移动到Image模型(如果可能的话?)并在该模型上设置顺序,它应该可以工作。
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']