2016-10-08 41 views
0

假設你有一個模型,它是在線閱讀一本書/網絡漫畫/卡通:Django的 - 創建多到一個模型時訪問父模型場

class Book(models.Model): 
    name = models.CharField(max_length=255, default="") 
    image = models.ImageField(upload_to='uploads/ + name + /coverImage/') 
    ... 

然後,每章的模型:

class Chapter(models.Model): 
    book= models.ForeignKey('Book', on_delete=models.CASCADE) 
    name = models.CharField(max_length=255, default="") 
    date_released = models.DateField(auto_now_add=True) 
    date_changed = models.DateTimeField(auto_now=True) 
    views = models.IntegerField(default=0) 

然後你有孩子模型,將包含圖像的每一頁:

class ChapterImages(models.Model): 
    chapter = models.ForeignKey('Chapter', on_delete=models.CASCADE) 
    image = models.ImageField(upload_to='uploads/' + chapter.book.name + '/chapter') 

中的最後一個字段的代碼ChapterImages字段image是錯誤的。我想知道在創建孩子時是否可以獲得父母的姓名?這樣我就可以很容易地將它上載到該章節的子文件夾中的書本身。

正如你所看到的,我輸入了​​哪個不行(右?)。有沒有一種好的方法來改變這種情況,以便它可以正常工作,而無需通過視圖手動進行操作?

回答

1

這實在是一個關於upload_to的問題。該屬性也需要一個可調用的,這是通過實例和文件名:

def upload_to_book_path(instance, filename): 
    return 'uploads/' + instance.chapter.book.name + '/chapter/' + filename 

class ChapterImages(models.Model): 
    image = models.ImageField(upload_to=upload_to_book_path) 
+0

我認爲我也必須做/章/ +文件名在結束?因爲這對我有效!謝謝。 –

+0

是的,很抱歉,更正。 –