重写Django管理模板时如何访问模型数据?

时间:2010-06-29 05:02:06

标签: django django-admin

对不起,如果这是一个显而易见的问题,但我已经搜索了几天但未能提出结果。

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

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

我想做的只是引用我覆盖的Django管理模板中的Photo对象 - 但我不知道要使用的相应标签。我需要引用所以我可以将它与easy-thumbnails缩略图标签一起使用......但是对于我的生活,我无法弄清楚引用该对象的模板标签。我试过遍历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

2 个答案:

答案 0 :(得分:3)

{{ form.instance }}将始终是与modelform关联的模型实例,假设有一个。

(注意``{{formset.instance}}`是内联formset中父模型的实例。)

答案 1 :(得分:0)

在Django 2.1中,{{adminform.form.instance.field_name}}为我工作。