Python/django

·Python/django
class Test(models.Model): house = models.ForeignKey( "house.House", verbose_name="집", on_delete=models.DO_NOTHING, db_constraint=False, db_index=False ) name = models.CharField(max_length=50, verbose_name="이름", null=True) title = models.CharField(max_length=50, verbose_name="제목", null=True) class Meta: verbose_name = "테스트" verbose_name_plural = verbose_name db_table = "test" constraints = [ mode..
·Python/django
review 중에 get_object로 가져오면 자동으로 404 에러를 띄워주니까 404 에러를 raise 하지 말라는 리뷰를 받았다. def get_object(self): """ Returns the object the view is displaying. You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf. """ queryset = self.filter_queryset(self.get_queryset()) # Perform the lookup filtering. l..
·Python/django
일반적으로 count를 쓰는 것이 len을 사용하는 것보다 성능적으로 우월하다고 한 것으로 알고 있었다. 근데, 나는 len으로 바꿔달라는 리뷰를 받았다. 왤까 싶어서 검색을 해봤다. len()과 count() 차이 count()와 len()은 둘 다 객체의 개수를 계산하는 데 사용되는 메서드이다. 그러나 성능 측면에서는 약간의 차이가 있다. count() 메서드는 SQL 쿼리를 실행하여 데이터베이스 내에서 개수를 직접 계산한다. 이는 데이터베이스에 대한 추가적인 쿼리를 실행해야 하므로 일부 성능 부하가 발생할 수 있다. 특히 데이터베이스에 많은 레코드가 있는 경우에는 성능 저하가 더 크게 나타날 수 있다. 반면에 len() 함수는 count()와 달리 Python 메모리 상에서 객체의 길이를 계산한다...
·Python/django
코드를 짜는데 OneToOneField 사용을 지양해달라는 피드백을 받았다. 왜 그런지 한번 살펴봤다. Django에서 OneToOneField를 사용하는 것을 지양하는 이유 복잡성: OneToOneField는 서로 강하게 연결된 두 개의 모델 간의 관계를 나타내기 위해 사용됩니다. 그러나 이러한 관계는 데이터베이스에서 조인 연산을 필요로 하기 때문에 쿼리의 복잡성을 증가시킬 수 있습니다. 특히 OneToOneField가 연속적으로 연결되는 경우 쿼리가 더 복잡해질 수 있습니다. 유연성: OneToOneField는 두 개의 모델이 서로 강하게 결합되어 있기 때문에 한 쪽 모델의 수정이 다른 쪽 모델에 영향을 줄 수 있습니다. 이는 데이터 모델의 변경이 어려워지고, 유연성과 확장성이 제한될 수 있다는 것을..
·Python/django
migrate 명령어 말고 SQL로 DB에 적용시키는데 쉬운 방법이 있다. 아래처럼 migration 을 해서 0001.initial.py 파일을 만들어보자. # 마이그레이션해주기 python3 manage.py makemigrations 'app 이름' --settings=config.settings.local # 예시 python3 manage.py makemigrations 'pizza' --settings=config.settings.local 그리고나서 아래 명령어를 한다. python3 manage.py sqlmigrate pizza 0001 --settings=config.settings.local 그럼 아래처럼 쿼리문을 보여준다. SELECT VERSION(), @@sql_mode, @@d..
·Python/django
DDL (Data Define Language) DDL은 데이터베이스의 Schema(형태)를 정의할 수 있는 쿼리문을 의미합니다. 여기에 CREATE, ALTER, DROP 이 대표적인 쿼리문이 있습니다. DDL 에 속하는 쿼리문의 이름에서도 알 수 있듯 데이터를 구성하는 논리적인 구조(데이터베이스 또는 테이블)을 추가하고 수정하고 삭제할 수 있습니다. 또한 메타데이터(데이터에 대한 데이터)를 다루는 쿼리문이라고 할 수 있습니다. DDL을 쓰는 이유 Django의 마이그레이션 도구는 변경 사항을 자동으로 감지하고 데이터베이스에 적용하는 편리한 방법을 제공하지만, 때로는 변경 사항을 세밀하게 제어해야 할 수 있습니다. DDL을 사용하면 데이터베이스 스키마를 직접 정의하고 원하는 대로 변경할 수 있습니다...
·Python/django
테스트 코드를 도입해볼까 싶어서 공부중이다. class TestViewSetTestCase(TestCase): def setUp(self): self.factory = APIRequestFactory() self.view = TestViewSet.as_view({'get': 'list'}) self.user = mock.Mock() self.admin_user = mock.Mock() self.user.is_authenticated = True self.admin_user.is_authenticated = True self.admin_user.is_staff = True 일단 어드민 유저만 접근 가능한 api를 테스트해 보려고 한다. 위는 유저 mock data를 만든 것이고 데이터베이스에 생성 테스트까..
·Python/django
https://tech.toktokhan.dev/2021/04/26/django-query-func/ ???: Django 쿼리 삼형제다! 들어가기에 앞서… 안녕하세요, 저는 베이비 개발자👶이자 이제 5달차가 되어가는 백엔드 개발자입니다. (요즘 밀고 있어요 응애) 저번 블로그 글에 이어 이렇게 또 다시 Django의 쿼리 관련 글을 tech.toktokhan.dev annotate, outref, value 3개 같이 많이 씀 https://wayhome25.github.io/django/2017/09/02/django-queryset-aggregate-coalesce/ Django - Coalesce를 사용하여 aggregate가 None을 반환하는 것을 방지하기 · 초보몽키의 개발공부로그 Djang..
알면 알 수록 재밌다!
'Python/django' 카테고리의 글 목록