Django에서 객체 생성

Salman Mehmood 2024년2월15일
Django에서 객체 생성

이 기사에서는 모델이 무엇이며 create() 메소드를 사용하여 객체를 생성하는 방법에 대해 설명합니다. Django에서 save() 메서드를 작동하는 방법을 살펴보겠습니다.

Django에서 create() 메소드를 사용하여 객체 생성

Django의 모델은 데이터베이스의 단일 테이블을 나타내는 클래스입니다. 모델로 표현되는 응용 프로그램의 각 유형의 데이터를 가질 수 있습니다.

그런 다음 각 모델은 데이터베이스의 단일 테이블에 매핑됩니다.

예를 들어, 4개의 모델, 기사, 사용자, 저자 및 책이 있는 경우 데이터베이스에 4개의 테이블이 있습니다. 단일 모델이 각 테이블을 매핑합니다.

데이터베이스에서 모델의 개체를 만드는 방법을 살펴보겠습니다.

Python 셸을 사용하여 새 개체를 만들 것입니다. Django 프로젝트의 루트에 있는지 확인하려면 관리자를 사용해야 합니다.

ls

출력:

db.sqlite3	manage.py	products	trydjango

이제 다른 명령을 실행할 것입니다. 따라서 이 명령을 실행하면 모든 Django 프로젝트 항목이 Python 인터프리터 내에서 작동합니다.

Enter를 누르면 일반 Python 인터프리터가 표시되지만 다음 명령을 실행할 수 있기 때문이 아닙니다.

python manage.py shell

models.py 파일에서 Product 모델을 가져왔습니다. Enter를 누르면 현재 셸에서 Product 모델을 사용할 수 있습니다.

from products.models import Product

정의된 모델에서 모든 개체를 검색하는 기본 제공 Django 명령이 있습니다.

Product.objects.all()

이제 항목이 하나만 있는 것을 볼 수 있습니다. 이는 하나만 저장했기 때문입니다.

<QuerySet[<Product: Product object (1)>]>

더 많은 객체를 보려면 다음 명령을 사용하여 더 많은 객체를 생성하기만 하면 됩니다.

Product.objects.create()

제품 모델에 4개의 필드가 있다고 가정합니다. 이 네 개의 필드는 새 객체를 생성하기 위해 create() 메서드를 전달해야 합니다.

Django 객체 생성 - 예제 1

다음 명령을 작성하여 새 개체를 만들어 봅시다.

Product.objects.create(
    title="New product",
    description="Another one",
    price=1222,
    summary="The best product",
)

이 명령을 작성한 후 Enter를 누르면 새 개체가 생성됩니다.

<Product: Product object (2)>

이제 모든 개체를 검색하려고 하면 새로 생성된 다른 항목이 표시됩니다.

Product.objects.all()

이제 쿼리 목록의 두 번째 항목을 볼 수 있습니다.

<QuerySet[<Product: Product object (1)>,<Product: Product object (2)>]>

관리자 패널로 이동하면 거기에 새 개체가 표시됩니다.

이제 save() 메서드를 사용하는 방법을 살펴보겠습니다. 다음 코드가 있고 정의된 모델의 모든 필드를 저장해야 한다고 가정합니다.

모델 클래스의 모든 필드를 전달하고 save() 메소드를 사용하여 이를 저장할 객체를 생성해야 합니다.

Django 개체 만들기 - 예 2

위의 코드에서 product_id를 정의했으므로 이제 해당 ID를 사용하여 제품에 액세스할 수 있습니다. product_id에서 primary_keyTrue로 설정합니다.

save() 메서드는 주어진 product_id가 이미 데이터베이스에 존재하는 경우 두 가지 조건에 대해 작동하며 개체는 다른 필드 값으로 업데이트됩니다.

save() 메서드가 product_id에서 True로 설정된 primary_key 속성을 찾지 못하거나 지정된 ID가 데이터베이스에 없으면 오류가 발생합니다. Product.objects.create()를 사용하면 새 개체만 삽입할 수 있습니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Django Model