Django 모델 관리자 objects.create 문서는 어디에 있습니까?


86

나는 항상 사용해야한다고 읽습니다.

model = Model(a=5, b=6)
model.save()

그러나 나는 그것을 사용하는 오픈 소스 django 앱을 보았 기 때문에 관리자 함수 생성이 있음을 방금 보았다.

model = Model.objects.create(a=5, b=6)
print model.pk
1

그래서 그것을 사용하는 것이 좋습니다? 또는 .save 메소드를 사용하는 것이 여전히 선호됩니까? 나는 objects.create가 무엇이든간에 그것을 만들려고 시도하지만 save는 pk가 지정되면 기존 객체를 저장할 수 있다고 생각합니다.

다음은 내가 찾은 문서입니다. https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects


11
이 질문이 왜 반대표를 얻었습니까? 나는 같은 질문으로 여기에 방금 도착했고 이것이 유용하다는 것을 알았습니다.
Ferguzz

4
나도 몰랐는데, 아마 사람들은 그것이 어리 석고 당연하다고 생각했을 것입니다. 그다지 신경 쓰지 마세요 : P 나는 행복하게 대답했습니다. 결과없이 검색해서 물었습니다.
Sam Stoelinga

답변:



44
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

다음과 동일 :

p = Person(first_name="Bruce", last_name="Springsteen") 
p.save(force_insert=True)

force_insert는 항상 새 개체가 생성됨을 의미합니다.
일반적으로 이것에 대해 걱정할 필요가 없습니다. 그러나 모델에 설정 한 수동 기본 키 값이 포함되어 있고 해당 값이 데이터베이스에 이미있는 경우 기본 키가 고유해야하므로 create () 호출이 IntegrityError와 함께 실패합니다. 수동 기본 키를 사용하는 경우 예외를 처리 할 준비를하십시오.


3

create는 기본적으로 동일합니다. 아래는 생성을위한 소스 코드입니다.

def create(self, **kwargs):
    """
    Creates a new object with the given kwargs, saving it to the database
    and returning the created object.
    """
    obj = self.model(**kwargs)
    self._for_write = True
    obj.save(force_insert=True, using=self.db)
    return obj

인스턴스를 생성 한 다음 저장합니다.


1

기본적으로이 두 가지 방법은 동일 합니다. Model.objects.createDjango 스타일에 더 적합하기 때문에 의 사용을 선호 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.