2010-06-29 86 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