본문 바로가기

소프트웨어 이야기/장고와 루비온레일즈

(Django) Django ORM에서 Row Lock 잡기 - select_for_update Row Lock과 SELECT * FOR UPDATEUPDATE / DELETE 없이, SELECT 만으로 Row Lock을 잡고 싶을 때는, "SELECT * FOR UPDATE" 쿼리를 사용하면 된다.이렇게 Row Lock을 잡고있는 도중에는 다른 트랜잭션에서 해당 Row를 변경 / 삭제할 수 없다. select_for_updateDjango에서 SELECT * FOR UPDATE 쿼리를 사용할 때는, Django ORM sel..
(Django) Django로 e-commerce 개발할 때 참고하기 좋은 오픈소스 e-commerce  Django 오픈소스 django-oscar 메인 github - https://github.com/django-oscar/django-oscar/데모 사이트 - https://latest.oscarcommerce.com/ko/basket/-> 기본 이커머스 플랫폼에 붙일 수 있는 플러그인 종류도 많다. 기타 쿠폰 관련 모델https://github.com/bytewea..
(Django) Rest Frame Work Filter 활용하기 FilterBackend 사용하기ViewSet에서 Request 파라미터로 받은 값이랑 일치하는 데이터를 조회해야할 때, 아래처럼 일일히 파라미터를 받아다가, filter 조건에 추가해줘야한다. class ProductList(generics.ListAPIView): serializer_class = PurchaseSerializer def get_queryset(self): """ This vi..
(Django)데이터베이스 커넥션을 관리하는 방법  Connection 재사용Django는 데이터베이스에 쿼리를 처음 날리기 전에 Connection을 맺는다. 그리고 커넥션을 계속 열어뒀다가, 다음 요청이오면 이걸 재사용한다. Request가 날라올 때마다 Connetion을 새로 맺는건 부담이 큰 작업이다. 그래서 Django에는 CON_MAX_AGE라는 설정값이 있다. 여기에 설정된 기간만큼 Connection을 닫지않고, 보존하겠다는 개념이다. 따로 설정해주지 않..
[django] get_XXX_display 함수 : 모델의 속성 값을 사람이 읽을 수 있는 문장으로 변환하기 Django Model Field에 choices 속성이 걸려있는 경우, 코드에 맞는 display용 텍스트를 볼 수 있게 하는 함수가 있다.음.. 말로하면 어려운데, 아무튼 이런거다.from django.db import models class Book(models.Model): CONDITIONS = ( (1, '새책'), (2, '중고책'), ) name = models.CharField(ma..
[django] 자주 사용되는 query set 모아서 관리하기 자주 사용되는 query set들을 한군데 모아서 관리하는 방법을 설명해보고자 합니다 :) 1. manager.py 를 만들어서, query set을 추가합니다class LessonQuerySet(models.QuerySet): def jazz(self): return self.filter(subject='jazz')2. model에 query set을 manager으로 등록해줘야합니다 class Lesson(mo..
Django VS Ruby On Rails Django가 루비온레일즈를 보고 만들었다고 하는데, 어떤 점이 같고 다른지 정리해보고자 한다.공통점1. 마이그레이트 파일로 테이블을 관리한다.    레일즈가 schema_migrations 테이블에 마이그레이트 코드를 관리한다면, 장고는 애플리케이션이름과 마이그레이트 파일명 단위로 마이그레이트 코드를 관리한다. 2. 기타 등등* 마이그레이트로 테이블을 만들면, 자동으로 id 필드를 추가해준다.  ..
레일즈에 Service/Decorator Layer 적용하기 (8) - 끝~ 이 포스팅은