세 가지 모델이 있습니다.Django에서 여러 모듈을 연결하는 방법은 무엇입니까?
class Picture(models.Model)
name = models.CharField(max_length=255)
image_field = models.ImageField(upload_to="foo/")
slug = models.SlugField()
[...]
class Size(models.Model):
name = models.CharField(max_length=255)
width = models.IntegerField()
height = models.IntegerField()
crop = models.BooleanField(default=True)
upscale = models.BooleanField(default=False)
def __unicode__(self):
return self.name
class Cache(models.Model):
size = models.ForeignKey('Size')
picture = models.ForeignKey('Picture')
image_field = models.ImageField(upload_to="picture/resize/")
다음과 같이 사용하고 싶습니다. 먼저 그림 개체를 생성하십시오. 그런 다음 크기 객체를 만듭니다. 모든 크기 및 그림에 대해 필요할 때 캐시 객체를 생성해야합니다.
제 문제는 코드를 어디에 넣어야할지 모르겠다는 것입니다. 그것은 (유사 코드)와 같아야합니다 :
def get_cached_picture(Picture,Size):
try:
cacheObj = Cache.objects.get(picture=Picture, size=Size):
[.. use cacheObj ..]
except Cache.DoesNotExist:
[.. resize Picture according to Size, insert into cache, use it ..]
그래서이 코드를 어디에 연결할 수 있습니까? 내가보기에서 이것을 할 수 있다는 것을 알고 있지만 모델에 그것을 포함시키는 방법이 있습니까? 캐시는 관리자에서 채워서는 안되며 캐시와 그림 사이의 특정 조합이 필요할 때마다 생성되어야합니다.
아마도 쉽게 할 수 있지만 Google에 적합한 키워드가 부족합니다.
몇 가지 질문 ... 당신은 당신의 그림으로 크기를 연결하기 위해 별도의 모델을 필요합니까 왜 때 picture.imagefield는 모델의 너비와 높이를 저장합니다. 캐시 모델의 목적은 무엇입니까? 이미지 데이터를 복제하는 것 같습니다.모델 스 니펫을 게시하고 찾으려는 정확한 코드와는 대조적으로 달성하려는 것을 조금 더 설명 할 수 있습니까? – jdi
이 목적은 여러 크기의 그림을 갖는 것입니다. 그림 모듈은 원본 이미지를 보유하고 캐시 모듈은 여러 개의 크기 조정 된 버전을 보유합니다. 답장을 보내 주셔서 감사합니다. 제 질문을 개선하려고 노력할 것입니다. – JasonTS
아 맞습니다. 그 정보는 분명 도움이됩니다. 캐시 모델은 실제로 더 많은 버전입니다. 나는 당신이 캐싱을 수동으로 시도함으로써 잘못된 길로 가고 있다고 생각하기 시작했다. 모델을 표시하기 위해 질문을 업데이트하고이 사용법의 예를 보여주십시오. – jdi