본문 바로가기

전체 글118

[REST] Nested relationships Nested relationshipsNested relationsips는 serializers 자체를 serializer 필드로써 사용하는 방법이다.만약, serializer를 리스트 파라미터로 받고 싶은 경우, 필드를 추가할 때 many=True를 추가하면 된다.Example: class TrackSerializer(serializers.ModelSerializer): class Meta: model = Track fields = ('order', 'title', 'duration') class AlbumSerializer(serializers.ModelSerializer): tracks = TrackSerializer(many=True, read_only=True) class Meta: model =.. 2016. 10. 11.
[REST Framework] extra()를 사용한 AS serializer 필드 등록 이 페이지는 Django, REST Framework의 Class based API인 ViewSet을 사용하는 것을 기반으로 설명하고 있습니다. 장고 모델에 있는 컬럼을 AS 를 이용하여 다른 변수를 추가하여 표현하고 싶을 때, 장고의 extra()를 사용하면 SQL의 AS로 치환된다. SELECT SUBSTRING(da_date, 1, 4) AS year, da_date FROM test_table; 위와 같이 da_date라는 컬럼의 값을 substring()을 이용하여 year라는 값을 추가하고 싶다. 이럴 경우, queryset의 extra()함수를 사용하면 된다.views.py TestTable.objects.all().extra( select={'year':'SUBSTRING(da_date, .. 2016. 10. 10.
[Django] Extra extra()extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 장고에서는 복잡한 WHERE 절을 표현하기가 쉽지 않은 경우가 있다. 이러한 경우에 extra() 를 사용하면 된다. 하지만 장고 문서 사이트에서는 QuerySet으로 표현이 안되는 최후의 경우에만 사용하는 것을 권고하는 것 같다.정의에 의하면, extra lookups를 사용하면 다른 데이터베이스 엔진으로 변경될 때 SQL 코드가 명시적으로 작성된 것이 아니기 때문에 이동할 수 없을지도 모르고, DRH principle을 위반한다. 그래서 가능하면 extra() 사용을 피해야 한다.params, select, where, tab.. 2016. 10. 6.
[Django] Filter vs Exclude Exclude Posts.objects.exclude(date__month=3) 조건에 속하지 않은 값을 조회IS NOT, NOT IN Filter Posts.objects.filter(date__month__in=[1,2,4,5,6,7,8,9,10,11,12]) 조건에 속하는 값을 조회IS, IN 2016. 10. 4.
[Django] Custom Model Fields Custom Model FieldsDjango model에서 사용하는 fields를 상속받아 수정하는 방식이다. from django.db import models class NullCharField(models.CharField): """ CharField with Null & Blank """ def __init__(self, *args, **kwargs): kwargs['blank'] = True kwargs['null'] = True super(NullCharField, self).__init__(self, *args, **kwargs) class NullBigIntegerField(models.BigIntegerField): """ BigIntegerField with Null & Blank ".. 2016. 9. 29.
[Django] Abstract Model Abstract ModelDjango model을 작성하다 보면 여러 테이블에 같은 형식의 필드(컬럼)이 있는 경우가 있다.이럴 땐, Abstract Model(추상 모델)을 만들어 상속받으면 된다.기본 방식 from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): home_group = models.CharField(max_length=5) 추상 클래스 만들기추상 클래스 (Abstract Model)을 만들긴 쉽다. 상위.. 2016. 9. 29.
[PostgreSQL] 도메인, 인덱스, 트리거 도메인엔티티 속성(attribute)들이 가질 수 있는 값의 집합을 의미. entity와 attribute에 대응하는 테이블의 column에 대한 data type, length를 의미 (즉, 두 속성의 도메인이 같다는 말은 두 속성의 데이터 타입과 길이가 같음을 의미)도메인 만들기CREATE DOMAIN name [AS] data_type[COLLATE collation] [DEFAULT expression][constraint [...]] where constraint is: [CONSTRAINT constraint_name]{NOT NULL | NULL | CHECK (expression)}name: 도메인 이름data_type: 도메인의 데이터 타입collation: 인덱스트리거 2016. 9. 26.
[PostgreSQL] 제약 조건 데이터 타입은 테이블에 데이터의 종류로 저장될 수 있다. SQL은 컬럼과 테이블에 제약 조건을 정의할 수 있다. 만약, 제약 조건에 맞지않는 데이터를 저장하려고 할 때 에러가 발생하게 된다. 제약 조건(Constraint)은 데이터의 무결성을 지키기 위해 제한된 조건을 말한다. 제약 조건에는 몇 가지 종류가 있으며 지원하는 수준도 DBMS에 따라 조금씩 다르다. 이 페이지는 PostgreSQL를 기준으로 제약 조건을 설명할 것이다.제약 조건의 종류Check ConstraintsNot-Null ConstraintsUnique ConstraintsPrimary KeysForeign KeysCheck ConstraintsCheck Constraints는 가장 일반적인 제약 조건이다. Check Constrai.. 2016. 9. 26.