2012-05-13 39 views
1

我想插入Django管理後創建一個目錄像記錄ID,如何以及在哪裏可以做到這一點。如何在django admn插入後獲取記錄ID?

我嘗試到save_model,但它不能正常工作,Gallery.ID返回無

型號:

class Gallery(models.Model): 
    title = models.CharField(max_length=250) 
    added = models.DateTimeField() 
    active = models.BooleanField() 

    def __unicode__(self): 
     return self.title 

而且AdminModel

class GalleryAdmin(admin.ModelAdmin): 
    save_on_top = True 
    list_filter = ('active',) 
    list_display = ('title','active','added') 
    ordering = ['-added'] 
    inlines = [ImagesInline] 

    def save_model(self, request, Gallery, form, change): 
     if not change: 
      Gallery.title = str(Gallery.id) 
     Gallery.save() 
+0

不要使用'Gallery'作爲你的方法的選項 - 它會隱藏'Gallery'類,無論如何這是誤導,因爲該方法是通過一個實例,而不是類。按照文檔中的建議,使用'obj'。 –

回答

1

更改GalleryAdmin這個..在Gallery實例獲得其id之前,您需要save()

def save_model(self, request, Gallery, form, change): 
    Gallery.save() 
    if not change: 
     Gallery.title = str(Gallery.id) 
+1

'title'不會被保存。你應該再次調用'save()'。 – DrTyrsa

+0

是的你是對的,沒有發現。 –

1
def save_model(self, request, Gallery, form, change): 
    if Gallery.id is None: 
     Gallery.save() 
    if not change: 
     Gallery.title = str(Gallery.id) 
    Gallery.save() 

這將做兩件save()唯一的第一次。