장고

2016-10-08 4 views
0

상상 대일 모델을 만드는 액세스 상위 모델 필드 온라인 독서를위한 책/웹 만화/만화 인 모델이장고

그런 다음
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이 잘못되었습니다. 그리고 아이를 만들면서 부모의 이름을 알아내는 것이 가능한지 알고 싶습니다. 그래서이 장의 하위 폴더에있는 책 자체와 같은 폴더에 쉽게 업로드 할 수 있습니다.

나는 알 수 있듯이 chapter.book.name을 입력했는데 작동하지 않는다 (맞습니까?). 수동으로 물마루 뷰를 수행하지 않고도 잘 작동하도록이 값을 변경할 수있는 좋은 방법이 있습니까?

답변

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

나는 또한/chapter/+ 파일 이름을 끝에 가져야합니다. 그게 나를 위해 일한 이유! 감사. –

+0

예, 죄송합니다. –