Python

    [Django]ManyToMany Field 는 왜 사용할까

    [Django]ManyToMany Field 는 왜 사용할까

    우선 MTM 과 ForeignKey Field의 셋팅을 보여드리겠습니다. 1.ForeignKey Field 2.ManyToMany Field 장점1. models.py의 코드가 줄어든다. MTM Field의 강제되는 필수 속성은 다대다 필드관계를 맺을 대상 클래스뿐입니다.(위의 경우에는 테이블이름을 직접지정) 그렇기때문에 다대다 필드를 직접 Class로 구현해서 모델을 생성하지 않아도 데이터베이스상에서는 아무런 문제가 없습니다. (주석처리된 부분은 중간필드를 직접 관리하고 싶을때 사용하는 코드) 장점2. 직접적인 연결의 역참조 우선 1번셋팅(ForeignKey)의 Foo_set을 보겠습니다. (Foo_set이란 본인을 참조하는 인스턴스에 접근할수있는 역참조 속성 Foo는 해당 모델의 이름을 따온다) dr..

    [django.models] ManyToMany 속성

    장고의 MTM 기본셋팅 models.ManyToManyField('상대클래스') 위의 코드로 테이블 생성시 DB에 나타나는 중간테이블의 속성 1.상대모델이 자신이 아닐경우 id : 중간테이블의 고유한 id _id : 필드를 선언한 모델이름_id 로설정 : 상대 클래스의 모델이름_id 로설정 2.상대모델이 자신일 경우 ('self') id : 중간테이블의 고유한 id from__id : 모델을 가리키는 인스턴스의 ID(원본 인스턴스ID) to__id : 관계가 가리키는 인스턴스의 ID(대상 모델 인스턴스) ForeignKey와 동일한 속성 ForeignKey.related_name. ForeignKey.related_query_name. ForeignKey.limit_choices_to. symmetric..

    [Django.models]외래키필드의 기본속성

    ForeignKey 외래키이기때문에 속성들이 들어갑니다. 이속성들은 OneToOne Field와 ManyToMany Field에도 역시 똑같이 적용됩니다. ForeignKey의 2개의 강제 속성과 특징 1.to : 어느 필드를 참조 할 것인지에대해 그 필드의 클래스명을 str타입으로 1번째 인자로 넣어줘야합니다. 2.on-delete : 참조무결성제약조건을 의미합니다. 이전블로그에 잘 정리되어있습니다. ForeignKey의 참조필드를 활용하는 기초적인 방법. 아래는 models.py의 코드입니다. class Menu(models.Model): name = models.CharField(max_length=45) class Meta: db_table = 'menus' class Category(models..

    [Models] QuerySetAPI

    **** 장고는 SQL에 영향이 미치는 메소드 앞에 배치하는것을 선호합니다 QuerySet 클래스의 두가지 공통속성 ordered QuerySet이 정렬된 경우 참입니다. 모델에 order_by() 절 또는 기본 순서가 있습니다. 그렇지 않으면 거짓이다. db 이 쿼리가 지금 실행될 경우 사용될 데이터 베이스입니다. new QuerySets 을 반환하는 Method filter() fliter(*args , **kwargs) 주어진 인자들과 조건이 일치하는 QuerySet을 반환합니다. SQL의 WHERE절의 조건이 됩니다. 키워드인수 사용시 아래와 같은형태를 나타냅니다. SELECT ... WHERE 조건식; or문이 있는 형식은 *args를 사용합니다. exclude() exclude(*args , ..

    [Models]외래키 Field 와 참조무결성

    ForeignKey 다대일 관계입니다. 두가지 옵션이 강제됩니다. 참조클래스이명 on_delete from django.db import models Class 클래스명(models.Model): 필드네임(칼럼네임) = models.ForeignKey('참조할필드의 클래스명',on_delete=models.참조속성) 이렇게 생성하면 실제 db에서는 아래와같은 일이 일어납니다. 필드네임_id로 칼럼이생성됩니다. db_column 을 이용하여 지정할 수 있습니다. key속성은 multiple 이 됩니다. bigint 타입으로 생성됩니다. index가 자동으로 생성됩니다.db_index = False 로 해제할 수 있습니다. 다른 APP의 모델을 참조하려면 아래와같이 사용하시면 됩니다. '앱이름'.'해당클래스..

    [Models] type of Field (ForeignKey not in)

    **여기서 나오는 위젯이란 단어는 HTML 위젯을 의미함 숫자형필드 AutoField SQL에서 auto-increment 속성을 지니는 필드입니다. 직접 사용해서 지정할일이 거의 없습니다. 왜냐하면, Django 는 테이블 생성시 auto-increment를 지닌 int타입 id칼럼을 자동으로 생성해주기때문입니다. BigAutoField 1 ~ 9223372036854775807 범위를 보장하는 64비트 정수 BigIntegerField (기본위젯 NumberInput) -9223372036854775808 ~ 9223372036854775807 범위를 보장하는 64비트 정수 PositiveBigIntegerField 0 ~ 9223372036854775807의 양수 타입 PositiveIntegerF..