2010-06-29 93 views
1

对不起,如果这是一个明显的问题,但我一直在寻找几天,并没有能够拿出一个结果。如何在覆盖Django管理模板时访问模型数据?

我正在创建一个简单的照片库应用程序。有四个画廊,每个画廊都包含一张照片(该照片由'之前'图像,'图像和标题'之后')组成。我正在尝试使用django-admin允许用户点击一个图库,然后添加照片。

我正在使用TabularInline编辑每个图库内的照片。除了TabularInline的默认列以外,我还想添加一个显示“之前”照片和“之后”照片的缩略图预览的列(我正在使用简易缩略图)。经过大量搜索之后,似乎最好的方法是重写django-admin tabularInline.html模板并自己添加列 - 所以我创建了另一个副本,并试图现在编辑它。

我想要做的只是引用Django管理模板中的Photo对象,我重写 - 但我不知道使用适当的标记。我需要参考,所以我可以将它与简易缩略图缩略图标记一起使用...但对于我的生活,我无法弄清楚引用该对象的模板标记。我试着迭代ModelForm,FormSet和FieldSet对象,但似乎没有给我直接引用该对象。

# models.py 

class Gallery(models.Model): 
    name = models.CharField(max_length=200) 
    url = models.CharField(max_length=200) 
    desc = models.TextField() 

    def __unicode__(self): 
    return self.name 

class Photo(models.Model): 
    gallery = models.ForeignKey(Gallery) 
    before = models.ImageField(upload_to='gallery') 
    after = models.ImageField(upload_to='gallery') 
    caption = models.CharField(max_length=1000) 
    order = models.IntegerField(blank = True, null = True) 

def __unicode__(self): 
     return "Photo " + str(self.order)  

# admin.py 
class GalleryForm(forms.ModelForm): 
model = Gallery 
class Media: 
    js = (
     '/assets/js/jquery-1.4.2.min.js', 
     '/assets/js/jquery-ui-1.8.2.custom.min-admin-sortable.js', 
     '/assets/js/menu-sort.js', 
    )   

class PhotoInline(admin.TabularInline): 
    model = Photo 
    extra = 1 
    template = "admin/tabular-thumbnails.html" 

admin.site.register(Gallery, 
inlines=[PhotoInline], 
form = GalleryForm) 

非常感谢,请让我知道,如果有任何额外的信息我可以提供。我正在使用Django 1.1

回答

3

{{ form.instance }}将始终是与模型相关联的模型实例,假设有一个。 (请注意``{{formset.instance}}`是内联formset中父模型的实例)。

+0

非常感谢,这工作完美。 – 2010-06-29 13:08:02