인프런 커뮤니티 질문&답변

Han Kim님의 프로필 이미지
Han Kim

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요!!!!!ㅎㅎㅎ 모델 객체 생성 not null constraint failed 에러 문제 문의드립니다!!

작성

·

1.2K

0

안녕하세요. !!!ㅎㅎㅎ

추상 모델을 상속받고 수동으로 모델객체를 생성해서 사용하려고 하는데 자동으로 생성되어야 하는
created_at, updated_at 필드에서 에러가 나서 질문드립니다!!

아래는 추상모델이고요!!

 

class BaseModel(Model):
    # 키값
    driver_pk = models.CharField(max_length=10, verbose_name="키값")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

 

아래는 위 BaseModel을 상속받아 사용하는 모델입니다!!

 

class Driver(BaseModel):
    class StateChoices(models.TextChoices):
        DONE = "DONE", "O"
        ING = "ING", "△"
        RELEASE = "RELEASE", "X"

    # 상태
    state = models.CharField(
        choices=StateChoices.choices,
        verbose_name="상태",
        max_length=10,
    )

    release_date = models.DateField(null=True, blank=True, verbose_name="해지날짜")

 

 

q = Driver(

    state= Driver.StateChoices.DONE, 

    driver_pk="홍길동123456", 

    release_date="2021-12-15",

)

 

위와 같이 모델 객체를 생성하려는데 (위에 모델사용을 위한 기본 셋팅은 다되있는상태입니다!)
IntegrityError: NOT NULL constraint failed: drivers_driver.created_at 에러가 뜨네요!?
원래 자동으로 생성되서 위 에러는 안떠야하는것같은데 이유가 뭘까요?
그리고 어떻게 하면 해결할 수 있을까요!!?? (어드민에서는 정상적으로 잘생성되고 업데이트도 잘 동작합니다 )

 

감사합니다~!~!~!~

 

 

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

IntegrityError: NOT NULL constraint failed: drivers_driver.created_at  오류가 발생하는 것은 created_at 필드가 쿼리에서 누락되었다는 것인데요.

아래와 같이 모델 코드만 봐서는 created_at 필드는 auto_now_add=True가 지정된 models.DateTimeField 이기에, 모델을 통해 자동으로 지정되어야하는 것이 맞습니다.

소스코드 저장이 잘 되었는 지, 혹은 서로 다른 프로젝트를 참조하고 있는 것은 아닌지 확인해보세요.

Han Kim님의 프로필 이미지
Han Kim

작성한 질문수

질문하기