Django在模板排序中显示多对多-忽略?
我正在尝试基于多对多关系(图像/画廊与中间画廊图像模型)显示对象(图像)列表 Galleryimage还有一个名为position的附加字段,我想用它来管理模板中列出图像的顺序 我还有一个页面模型,可以选择附加一个图库 我的模型是这样的: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
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']
你能解释一下“按预期显示”和“不管我做什么”的意思吗。您希望更改图像顺序的操作是什么?