프로젝트에 속한 사진 인 시스템을 만들고 싶습니다. 나는 또한 프로젝트에 대해 zip 파일을 직접 업로드 할 수 있으며, 압축을 풀고 지정한 프로젝트에 사진을 등록 할 수있게되었습니다. 그러나 Photo
클래스를 정의하는 동안 문제가 발생합니다.장고, 모델 내 ForeignKey 값 사용
Project.file_zip.path
의 값을 img
필드의 upload_to
속성을 정의하는 현재 인스턴스와 함께 가져와야합니다. 그러나, 내가 아래처럼 시도했을 때 AttributeError: 'ForeignKey' object has no attribute 'file_path'
과 함께 반환됩니다. 어떻게 수정해야합니까?
class Project(models.Model):
....
owner=models.ForeignKey(User)
file_zip=models.FileField(upload_to='projects/%Y/%m/%d')
def __unicode__(self):
return self.project_name
def file_path(self):
return re.search(re.search('[^\s]+(?=\.zip)', self.file_zip).group(0))
class Photo(models.Model):
belongs_to=models.ForeignKey(Project)
img=models.ImageField(upload_to='/home/contact/python_project/all_bugs_will_reveal/'+belongs_to.file_path())
desc=models.CharField(max_length=255)
귀하의 지시를 따르려고하지만; 어느 쪽이든 함수를 잘못 정의했거나 올바른 방법으로 호출하지 않습니다. 'TypeError : project_path()와 함께'% s/% s '% (instance.belongs_to.file_path, 파일 이름)'및'img = models.ImageField (upload_to = project_path())'를 반환합니다 : def project_path (인스턴스, 파일 이름) : 반환합니다.()는 정확히 2 개의 인수 (0이 주어진다.)' –
은'ImageField (upload_to = project_path)'이어야하며 대괄호는 사용하지 않는다. 그렇지 않으면 파일이 업로드 될 때가 아니라 매개 변수없이 양식이 정의 될 때 함수가 호출됩니다. –
예, 실제로 올바른 코드를 작성했지만 다른 곳에서 실수를했고 버그를 찾으려고 할 때도 변경되었습니다. 이제 잘 작동합니다. 감사. –