class Photo(models.Model): # 자신의 부모(Album)에 대한 외래키 album = models.ForeignKey(Album) title = models.CharField('사진 제목', max_length=50) # ThumbnailImageField는 upload_to 옵션으로 저장 위치를 지정 # MEDIA_ROOT로 지정된 폴더 하위에 /photo/2018/03/과 같은 폴더를 생성하고, # 여기에 업로드된 파일을 자동적으로 저장해줌 image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('사진 설명', blank=True) # settings.TIME_ZONE = 'Asia/Seoul' 으로 설정해도 UTC 시각으로 처리됨 # DB에 저장되는 시각은 UTC 시각이지만, 아래 속성 처리로 한국 시각으로 변환하여 템플릿에 제공함 upload_date = models.DateTimeField('등록 일시', auto_now_add=True) # # 아래와 같이 속성 처리를 변경해야 한국 시각으로 처리됨 # @property # def created_at_korean_time(self): # korean_timezone = timezone(settings.TIME_ZONE) # return self.created_at.astimezone(korean_timezone) class Meta: ordering = ['title'] def __str__(self): return self.title def get_absolute_url(self): # 이 메소드가 정의된 객체의 URL /photo/photo/99 형식의 값을 반환 return reverse('photo:photo_detail', args=(self.id, ))
class Product(models.Model): name = models.CharField(max_length=100) price = models.IntegerField(default=0) description = models.CharField(max_length=5000) image = ThumbnailImageField('IMAGE',upload_to=user_directory_path,blank = True) quantity = models.IntegerField(default=0) category = models.CharField(max_length= 100, blank=True) # category = models.ForeignKey(Category, on_delete=models.CASCADE, default=1) def __str__(self): return self.name def get_absolute_url(self): # 현재 데이터의 절대 경로 추출 return '' # reverse('blog:post_detail', args=(self.slug,)) def get_previous(self): # 이전 데이터 추출 return self.get_previous_by_modify_dt() def get_next(self): # 다음 데이터 추출 return self.get_next_by_modify_dt() def save(self, *args, **kwargs): if self.id is None: temp_image = self.image self.image = None super().save(*args, **kwargs) self.image = temp_image super().save(*args, **kwargs)
class Photo(models.Model): """ docstring """ album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField('TITLE', max_length=30) description = models.TextField('Photo Description', blank=True) image = ThumbnailImageField(upload_to='photo/%y/%m') upload_dt = models.DateTimeField('Upload Date', auto_now_add=True) owner = models.ForeignKey('auth.User', on_delete=models.CASCADE, verbose_name='OWNER', blank=True, null=True) class Meta: """ docstring """ ordering = ('title', ) def __str__(self): """ docstring """ return self.title def get_absolute_url(self): """ docstring """ return reverse('photo:photo_detail', args=(self.id, ))
class Review(models.Model): title = models.CharField(verbose_name='TITLE', max_length=50) content = HTMLField('CONTENT') create_dt = models.DateTimeField('CREATE DATE', auto_now_add=True) modify_dt = models.DateTimeField('MODIFY DATE', auto_now=True) owner = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='OWNER', blank=True, null=True) # 전체 상품 말고 주문한 상품으로 받기 product = models.ForeignKey(Product, on_delete=models.CASCADE, default=1) image = ThumbnailImageField('IMAGE', upload_to=review_image_path, blank = True, null=True) class Meta: ordering = ('-create_dt',) def __str__(self): return self.title def get_absolute_url(self): return '' # reverse('shopwindows:review_add', args=(self.id,)) def get_previous(self): return self.get_previous_by_create_dt() def get_next(self): return self.get_next_by_create_dt() def save(self, *args, **kwargs): if self.id is None: temp_image = self.image self.image = None super().save(*args, **kwargs) self.image = temp_image super().save(*args, **kwargs)
class Photo(models.Model): #db에는 경로만 저장되고 파일을 media폴더에 저장된다. album = models.ForeignKey(Album, on_delete=models.CASCADE) #앨범테이블에 연결된 외래키. # 사진이 소속된 앨범객체를 가르킴. 연결된 앨범이 지워지면 photo도 지우라는 옵션(cascade) 추가(필수). # django2.0부터는 on_delete옵션을 추가해야함 title = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') #Thumb~~는 이미지, 썸네일 둘다 저장하는 커스텀 필드(장고가 아니라 서드파티에서 스스로 정의한 필드). #모델에서 가져오지 않았음에 주목!! upload_to로 저장할 위치 지정 #세팅에 MEDIA_ROOT로 지정된 곳 하위에 ~/photo/2020/12처럼 폴더를 만들고 그곳에 사진 및 썸네일 저장 description = models.TextField('Photo Description', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) #auto~~ 객체가 생성될 때 시간을 자동으로 저장. 즉 사진이 업로드 될 때 시간을 자동으로 저장 owner = models.ForeignKey(User, null=True, on_delete=models.CASCADE) #사용자만 생성할 수 있도록 소유자필드 추가 class Meta: #필드속성 외에 필요한 테이블의 파라미터를 정의하기 위해, 내부클래스 선언(이또한 상속받는 것) ordering = ['title'] #모델객체의 리스트 출력시 이름기준 오름차순으로 def __str__(self): return self.title #어디서는 Photo테이블의 객체를 호출하면, 그 객체의 title값을 표시하라. #단, __str__을 적용해 문자형태로 알기쉽게 표기 def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): # 자신의 부모(Album)에 대한 외래키 album = models.ForeignKey(Album) title = models.CharField('사진 제목', max_length=50) # ThumbnailImageField는 upload_to 옵션으로 저장 위치를 지정 # MEDIA_ROOT로 지정된 폴더 하위에 /photo/2018/03/과 같은 폴더를 생성하고, # 여기에 업로드된 파일을 자동적으로 저장해줌 image = ThumbnailImageField(upload_to='photo/%Y/%m')
class Photo(models.Model): # 자신의 부모(Album)에 대한 외래키 album = models.ForeignKey(Album) # Album부모 테이블에서 참조! title = models.CharField('제목', max_length=50) # ThumbnailImageField는 upload_to 옵션으로 저장 위치를 지정 # MEDIA_ROOT로 지정된 폴더 하위에 /photo/2018/03/과 같은 폴더를 생성하고, # 여기에 업로드된 파일을 자동적으로 저장해줌 image = ThumbnailImageField(upload_to='photo/%Y/%m') # media 폴더의 photo안에 Y 년도에 해당하는 폴더 \ m 날짜에 해당하는 폴더에 저장함! description = models.TextField('제품 설명', blank=True) # 여러 줄로 작성할 수 있는 게 TextField # settings.TIME_ZONE = 'Asia/Seoul' 으로 설정해도 UTC 시각으로 처리됨 # DB에 저장되는 시각은 UTC 시각이지만, 아래 속성 처리로 한국 시각으로 변환하여 템플릿에 제공함 # upload_date = models.DateTimeField('등록 일시', auto_now_add=True) upload_date = models.DateTimeField('등록 일시', auto_now_add=True) # # ##############아래와 같이 속성 처리를 변경해야 한국 시각으로 처리됨################# # @property # def created_at_korean_time(self): # korean_timezone = timezone(settings.TIME_ZONE) # return self.created_at.astimezone(korean_timezone) # class Meta: # ordering = ['title'] class Meta: # 날짜 최신순 정렬 ordering = ['-upload_date'] def __str__(self): return self.title def get_absolute_url(self): # 이 메소드가 정의된 객체의 URL /photo/photo/99 형식의 값을 반환 return reverse('photo:photo_detail', args=(self.id,)) def get_previous_post(self): # 3.2.5 항에서 템플릿 작성할 때 사용 return self.get_previous_by_upload_date() def get_next_post(self): # 3.2.5 항에서 템플릿 작성할 때 사용 return self.get_next_by_upload_date() def get_newer_photo(self): # ch10_nav newer_photo = Photo.objects.filter( upload_date__gt = self.upload_date , album = self.album ).order_by('upload_date').first() return newer_photo def get_older_photo(self): # ch10_nav older_photo = Photo.objects.filter( upload_date__lt = self.upload_date , album = self.album ).order_by('-upload_date').first() return older_photo
class Photo(models.Model): album = models.ForeignKey(Album) title = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('Photo Description', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) class Meta: ordering = ['title'] def __str__(self): return self.title def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField('TITLE', max_length=30) description = models.TextField('Photo Description', blank=True) image = ThumbnailImageField('IMAGE', upload_to='photo/%Y/%m') upload_dt = models.DateTimeField('UPLOAD DATE', auto_now_add=True) class Meta: ordering = ('title', ) def __str__(self): return self.title def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField("TITLE", max_length=30) description = models.TextField("Photo Description", blank=True) image = ThumbnailImageField(upload_to="photo/%Y/%M") update_dt = models.DateTimeField("Upload Date", auto_now=True) class Meta: ordering = ("title", ) def __str__(self): return self.title def get_absolute_url(self): return reverse("photo:photo_detail", args=(self.id, ))
class Photo(models.Model): # 자신의 부모(Album)에 대한 외래키 album = models.ForeignKey(Album) title = models.CharField('사진 제목', max_length=50) # ThumbnailImageField는 upload_to 옵션으로 저장 위치를 지정 # MEDIA_ROOT로 지정된 폴더 하위에 /photo/2018/03/과 같은 폴더를 생성하고, # 여기에 업로드된 파일을 자동적으로 저장해줌 image = ThumbnailImageField(upload_to='photo/%Y/%m') bojunggum = models.CharField('보증금/월세', max_length=50, blank=True) junse = models.CharField('전세', max_length=50, blank=True) m = models.CharField('전용/공급면적', max_length=20, blank=True) floor = models.CharField('해당층/건물층', max_length=50, blank=True) elevator = models.CharField('엘레베이터', max_length=10, blank=True) animal = models.CharField('반려동물', max_length=10, blank=True) loan = models.CharField('전세자금대출', max_length=10, blank=True) balcony = models.CharField('베란다/발코니', max_length=10, blank=True) inHome = models.CharField('입주가능일', max_length=10, blank=True) description = models.TextField('상세 설명', blank=True) # settings.TIME_ZONE = 'Asia/Seoul' 으로 설정해도 UTC 시각으로 처리됨 # DB에 저장되는 시각은 UTC 시각이지만, 아래 속성 처리로 한국 시각으로 변환하여 템플릿에 제공함 upload_date = models.DateTimeField('등록 일시', auto_now_add=True) # # 아래와 같이 속성 처리를 변경해야 한국 시각으로 처리됨 # @property # def created_at_korean_time(self): # korean_timezone = timezone(settings.TIME_ZONE) # return self.created_at.astimezone(korean_timezone) class Meta: ordering = ['-upload_date'] def __str__(self): return self.title def get_absolute_url(self): # 이 메소드가 정의된 객체의 URL /photo/photo/99 형식의 값을 반환 return reverse('photo:photo_detail', args=(self.id, )) def get_previous_photo(self): previous_photo = Photo.objects.filter(upload_date__lt=self.upload_date, album=self.album).first() return previous_photo def get_next_photo(self): next_photo = Photo.objects.filter(upload_date__gt=self.upload_date, album=self.album).last() return next_photo
class Photo(models.Model): album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField('TITLE', max_length=30) srcurl = models.URLField('Source URL', blank=True) image = ThumbnailImageField(upload_to='photo/%Y/%m') upload_dt = models.DateTimeField('Upload Date', auto_now_add=True) class Meta: ordering = ('title', ) def __str__(self): return self.title def get_absolute_url(self): return reverse( 'photo:photo_detail', args=(self.id), )
class Photo(models.Model): album = models.ForeignKey(Album, on_delete=models.CASCADE) # Album 테이블에 연결된 외래키(사진이 소속된 앨범을 가리킴) title = models.CharField('TITLE', max_length=30) description = models.TextField('사진 설명', blank=True) # 필드를 커스텀필드로도 할 수 있음! // 원본 이미지 및 썸네일 이미지를 둘다 저장하는 필드 // upload_to = 저장할 위치(MEDIA_ROOT 기준), /photo/년도/월 형식으로 저장하겠다. image = ThumbnailImageField(upload_to='photo/%Y/%m') upload_dt = models.DateTimeField('업로드 일자', auto_now_add=True) # 사진이 업로드 되는 시간을 저장 # 내부 클래스 // 객체 리스트 출력 시 순서(title 컬럼 기준으로) class Meta: ordering = ('title',) def __str__(self): return self.title def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id,)) # /photo/photo/99 형식의 url 반환
class Photo(models.Model): album = models.ForeignKey( Album, on_delete=models.CASCADE ) #https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.on_delete 참조 title = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('Photo Description', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) owner = models.ForeignKey(User, null=True, on_delete=models.CASCADE) class Meta: ordering = ['title'] def __str__(self): return self.title def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): # 자신의 부모(Album)에 대한 외래키 album = models.ForeignKey(Album) title = models.CharField('사진 제목', max_length=50) # ThumbnailImageField는 upload_to 옵션으로 저장 위치를 지정 # MEDIA_ROOT로 지정된 폴더 하위에 /photo/2018/03/과 같은 폴더를 생성하고, # 여기에 업로드된 파일을 자동적으로 저장해줌 image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('사진 설명', blank=True) # settings.TIME_ZONE = 'Asia/Seoul' 으로 설정해도 UTC 시각으로 처리됨 # DB에 저장되는 시각은 UTC 시각이지만, 아래 속성 처리로 한국 시각으로 변환하여 템플릿에 제공함 upload_date = models.DateTimeField('등록 일시', auto_now_add=True) # 아래와 같이 속성 처리를 변경해야 한국 시각으로 처리됨 @property def created_at_korean_time(self): korean_timezone = timezone(settings.TIME_ZONE) return self.created_at.astimezone(korean_timezone) class Meta: ordering = ['-upload_date'] def __str__(self): return self.title def get_absolute_url(self): # 이 메소드가 정의된 객체의 URL /photo/photo/99 형식의 값을 반환 return reverse('photo:photo_detail', args=(self.id, )) # ver#3.0 https://stackoverflow.com/questions/39947041/how-to-continue-the-object-in-django-get-next-previous-by-date-created-and-publi # filter 사용법: http://brownbears.tistory.com/63 def get_newer_photo(self): # ch10_nav newer_photo = Photo.objects.filter( upload_date__gt=self.upload_date, album=self.album).order_by('upload_date').first() return newer_photo def get_older_photo(self): # ch10_nav older_photo = Photo.objects.filter( upload_date__lt=self.upload_date, album=self.album).order_by('-upload_date').first() return older_photo
class Photo(models.Model): album = models.ForeignKey( Album, on_delete=models.CASCADE ) title = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('Photo Description', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) owner = models.ForeignKey( User, on_delete=models.CASCADE, null=True ) class Meta: ordering = ['title'] def __str__(self): return self.title
class Photo(models.Model): album = models.ForeignKey(Album) #한 줄 설명 origin = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('상세설명', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) cnt = models.CharField(max_length=50) price = models.CharField(max_length=50) Subscription_ratings = models.CharField(max_length=50) purchase_after_sub = models.CharField(max_length=50) owner = models.ForeignKey(User, null=True) class Meta: ordering = ['origin'] def __str__(self): return self.origin def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): # album 컬럼은 Album 테이블에 연결된 외래 키, 본 사진이 소속된 앨범 객체를 가리키는 reference 역활 album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField(max_length=50) # image 컬럼 타입은 ThumbnailImageField, 이 필드는 사진에 대한 원본 이미지 및 썸네일 이미지 둘다를 저장할 수있는 필드 # upload_to 옵션으로 저장할 위치를 지정, photo/%Y/%m의 의미는 MEDIA_ROOT 로 정의된 디렉터리 하위에 사진 년도 월을 포함해 # 디렉터리를 만들고 그 곳에 업로드하는 사진의 원본 및 썸네일 사진을 저장. image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('Photo Description', blank=True) # 객체가 생성될때의 시각을 자동으로 기록 upload_date = models.DateTimeField('Upload Date', auto_now_add=True) # 객체 리스트를 출력할 때의 title 컬럼 기준으로 오름차순으로 보여줌 class Meta: ordering = ['title'] def __str__(self): return self.title # 정의된 객체를 지칭하는 URL 을 반환 def get_absolute_url(self): return reverse('photo:photo_detail', args=(self.id, ))
class Photo(models.Model): album = models.ForeignKey( Album, on_delete=models.CASCADE, ) title = models.CharField(max_length=50) image = ThumbnailImageField(upload_to='photo/%Y/%m') description = models.TextField('Photo Description', blank=True) upload_date = models.DateTimeField('Upload Date', auto_now_add=True) owner = models.ForeignKey( User, on_delete=models.CASCADE, ) class Meta: ordering = ['title'] verbose_name = 'Photo' verbose_name_plural = 'Photos' def __str__(self): return self.title def get_absolute_url(self): return reverse('photo:test', args=(self.id, ))
class Photo(models.Model): album = models.ForeignKey(Album, on_delete=models.CASCADE) title = models.CharField("Title", max_length=50) description = models.TextField("Photo Description", blank=True) image = ThumbnailImageField(upload_to='photo/%Y/%m') upload_dt = models.DateTimeField('Upload Date', auto_now_add=False)