[Docker]sudo 없이 docker 명령어 사용하기

맥에서 docker를 사용할땐 sudo 없이 처음부터 사용할 수 있다. 하지만 배포를 위해 리눅스 환경에서 도커를 설치하고 사용하려고 하면 mac과는 다르게 sudo 권한을 수동으로 설정해야 하는데, 이는 꽤나 귀찮은 작업이므로 해결방법에 대해서 정리한다.

로그인된 사용자를 docker 그룹에 등록

현재 시스템에 로그인된 사용자를 docker 그룹에 등록하면 sudo 명령어 없이 docker를 사용할 수 있다.

1
sudo usermod -aG docker $USER

정리

docker 데몬은 root 권한으로 실행되기 때문에 다른 사용자가 사용하기 위해서는 항상 sudo를 붙이고 사용해야 하는 귀찮음이 존재한다. root 권한으로 변경하여 사용해도 되지만 root 권한을 무분별하게 사용하는 것은 권장되지 않기 때문에 현재 로그인된 유저를 docker 그룹에 추가하는 방법이 좋다.


[참고]
https://www.slipp.net/questions/485
https://blusky10.tistory.com/359

Share

[DRF]serializers의 필드명 변경하기

직렬화를 위해 시리얼라이져를 사용하게 되면 보통은 모델의 필드명과 같이 기본적으로 정해지는 이름을 사용한다. 필드명을 변경하고 싶다면 아래와 같이 작업하면 된다.

serializer의 필드명 변경

일반적인 serializer 뿐만 아니라 모델을 통해 생성할 수 있는 ModelSerializer에도 적용할 수 있다.

1
2
class TestSerializer(serializers.Serializer):
x = serializers.IntegerField(source="<원래의 필드명>")

source의 값으로 원래의 필드명을 명시해주고 변경하려는 이름으로 필드를 생성하면 된다!

ModelSerializer의 경우는 이렇게 하면 된다.

1
2
3
4
5
6
class TestSerializer(sesrializers.ModelSerializer):
x = serializers.IntegerField(source="<원래의 필드명>")

class Meta:
model = TestModel
fields = ('x', ...)

[참고]
https://stackoverflow.com/questions/22958058/how-to-change-field-name-in-django-rest-framework

Share

[Django]Django ORM을 이용해 테이블의 컬럼의 합 구하기

보통 ORM을 통해 작업을 하다보면 작업의 단위는 하나의 row(행, 튜플)일 것이다. Django에서 제공하는 Aggregation을 이용하면 CRUD 작업 이외의 것들도 수행할 수 있는데 그 중에서 필드의 합을 구하는 Sum에 대해서 정리해본다.

모델

아래와 같은 Item 모델이 있다고 가정하고 시작하자. 1, 2와 같이 단순 숫자로된 카테고리와 상품의 가격 필드를 가지고 있다.

1
2
3
class Item(models.Model):
category = models.IntegerField()
price = models.IntegerField()

Aggregate

복수 개의 item이 있고 카테고리 번호가 3번인 상품들에 한해서 price의 합을 구하고 싶으면 아래와 같이 할 수 있다. Sum 함수를 임포트 해야하고 인자로써 합계를 구하려는 필드명을 적어주어야 한다.

1
2
3
4
# Sum 함수를 임포트 해주어야 한다
from django.db.models import Sum

total_price = Item.objects.filter(category=3).aggregate(Sum('price'))

aggregate의 결과를 total_price라는 변수에 저장을 했다. aggregate의 결과 값은 dict형으로 반환되며 아래와 같이 사용하면 된다.

1
2
3
4
# 기본형
# obj[<field명__aggregate명>]

total_price['price__sum']

[참고]
https://fun25.co.kr/blog/python-django-orm-aggregate-sum/?category=002
https://docs.djangoproject.com/en/3.0/topics/db/aggregation/
http://raccoonyy.github.io/django-annotate-and-aggregate-like-as-excel/
https://wayhome25.github.io/django/2017/09/02/django-queryset-aggregate-coalesce/

Share