2012-12-01 2 views
0

나는 django를 사용하여 웹 사이트를 디자인하고 있습니다. 웹 사이트의 아이디어는 사진 작가를 갖는 것이며 각 사진 작가는 앨범 또는 더 많은 앨범을 가지며 각 앨범에는 하나 이상의 사진/사진이 있습니다. 현재 내가 가지고django 데이터베이스

class Photo(models.Model): 
    name=models.ForeignKey('Album') 
    p=models.ImageField() 
    def __unicode__(self): 
     return self.name 
class Album(models.Model): 
    name=models.ForeignKey('Photographer') 
    def __unicode__(self): 
     return self.name 
class Photographer(models.Model): 
    name=models.ForeignKey('User') 
    def __unicode__(self): 
     return self.name 

문제는 같은 디자인이있는 경우 각 사진에 대한 디렉토리를 만들 것이며, 각 앨범에 대한 상위 디렉토리에서 다른 디렉토리를 만들 것이며, 그 앨범의 디렉토리에 사진을 저장하다 또는 데이터베이스에 저장하십시오. 나는 그것이 초보자 질문 인 것을 안다. 그러나 나는 정말로 도움이 필요하다. 나에게 좀 더 쉽게 만들어 줄 다른 디자인이 있다면 알려 주시기 바랍니다. 사전에

감사합니다, 압둘

+0

어 ... 저장 처리기에서 처리해 드리겠습니다. –

+0

무엇을 의미합니까? – abdul

답변

2

이미지 필드를 사용하여 모든 사진을 한 곳에서 저장하고 클라우드 스토리지 서비스에 저장하는 것이 좋습니다. 그리고 관계에 관해서는 앨범과 사진 작가와 관련된 사진 모델에 ForeignKeys 있습니다. 역방향 관계를 사용하여 각 앨범 또는 사진 작가의 사진을 찾습니다.

귀하의 코드가 this`

class Photo(models.Model): 
image = ImageField(upload_to="whereever you want to") 
album = ForeignKey(Album) 
photographer=ForeignKey(Photographer) 

처럼 보일 수 있습니다 당신은 당신이 사용할 수있는 특정 앨범을 얻을 후 Album.set_all 및 photographer.set_all 특정 앨범이나 사진 작가

의 모든 사진을 얻을 수

`

1

예, 오히려 데이터베이스보다, 파일 시스템에 직접 사진을 저장합니다. 이는 주로 성능과 관련된 많은 이유로 의미가있는 일반적인 방법입니다.

사진 수가 많을 것으로 예상되는 경우 인기있는 시스템에서 성능 문제를 일으킬 수있는 원인이 될 수 있습니다. 대신 응용 프로그램에 적합한 간단한 계층 구조를 설계하십시오.

+0

그러나이를 처리하는 프레임 워크를 알고 있습니까? – abdul

+0

Django의'ImageField'가 바로 그 것을 처리합니다 ... 내 대답을보십시오. – miki725

+0

나중에 라틴어가 아닌 문자를 처리하고 병합합니까? – abdul

1

사진 작가 또는 앨범의 디렉토리를 만들 필요가 없습니다. 이것이 바로 데이터베이스가 필요한 것입니다. 하나의 거대한 폴더 (upload_to에 명시)를 가질 수 있습니다.이 폴더에는 모든 사진 작가 및 앨범에 업로드 된 모든 이미지가 포함될 것이며, 어떤 사진이 어떤 사진 작가/앨범에 속하는지 추적 할 수 있습니다.

그런데

당신은 ImageField에 대한 upload_to 매개 변수를 지정해야합니다 :

models.ImageField(upload_to='images/') 

당신이 정말로 각 앨범 폴더를 만들려면, 당신은 upload_to 매개 변수에 함수를 통과하고 당신이 원하는대로 논리를 추가 할 수 있습니다 .. . 그 문서에 대한 자세한 내용은 here.

관련 문제