inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

포스팅 목록 API를 구현하고 리액트에서 받아서 표현하기

db쪽에 자꾸 에러가 납니다

884

윤해빈

작성한 질문수 23

0

현재 MySQL을 사용해서 선생님 강의를 보며 모델을작성중인데 계속 이런 에러가 뜹니다.

 

django.db.utils.OperationalError: (1054, "Unknown column 'accounts_user.password' in 'field list'")

accounts/models.py

from django.conf import settings
from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    pass

./ serializers.py

from rest_framework import serializers
from django.contrib.auth import get_user_model

User = get_user_model()

class SignupSerializer(serializers.ModelSerializer):
    #pw 보안
    password = serializers.CharField(write_only=True)

    def create(self, validated_data):
        user = User.objects.create(username=validated_data["username"])
        user.set_password(validated_data["password"]) #암호화된 비번 저장
        user.save()
        return user
    
    class Meta:
        model = User
        fields = ["pk", "username", "password"]

./views.py

from django.contrib.auth import get_user_model
from django.shortcuts import render
from rest_framework.permissions import AllowAny
from rest_framework.generics import CreateAPIView
from .serializers import SignupSerializer

#회원가입 뷰
#createapiview 이므로 get 메소드 허용X
class SignupView(CreateAPIView):
    model = get_user_model()
    serializer_class = SignupSerializer
    permission_classes = [
        AllowAny,#실제로 회원가입할 때는 로그인은 되면 안됨
    ]

 

그리고 accounts의 user를 참조하면서 라벨과 이미지를 첨부할 수있는 mainfunc의

./models.py

from django.db import models
from django.conf import settings
from django.contrib.auth.models import User

class TImestampedModel(models.Model):
    # 기본 필드값
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

class Post(TImestampedModel):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    label = models.CharField(max_length=50, default='')
    images = models.ImageField(upload_to='images/%Y/%m/%d', blank=True)

    def __str__(self):
        return f'{self.author}'

./views.py
from rest_framework.viewsets import ModelViewSet
from .serializers import PostSerializer
from .models import Post
from rest_framework.permissions import AllowAny
from django.db.models import Q

# CRUD가 모두 들어간 API를 지원
class PostViewSet(ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    #permission_classes = [AllowAny] #FIXME: 인증 적용

    def get_queryset(self):
        qs = super().get_queryset()
        qs = qs.filter(
            Q(author=self.request.user) #본인이 작성한 글만 볼 수 있도록 함.
        )
        return qs

 

이렇습니다.
구글링해봐도 대부분은 그냥 migrations 된 파일을 삭제하고 다시 migrate 하니까 해결이 되던데 저는 계속 같은 에러가 뜨네요..혹시 뭐가 원인인지 알 수 있을까요?
AbstractUser 로 수정하고나서부터 이런 현상이 나타나긴 했습니다

일단 ERD는 아래와 같이 나옵니다.

react python django docker

답변 1

1

이진석

안녕하세요.

아래의 오류는 현재 장고 프로젝트가 바라보고 있는 데이터베이스에서 accounts 앱의 User 모델이 바라보는 테이블에서 password 컬럼이 없다는 오류입니다.

django.db.utils.OperationalError: (1054, "Unknown column 'accounts_user.password' in 'field list'")

ERD는 설계문서일 뿐, 현재의 데이터베이스 상황은 데이터베이스에 직접 접속해서 확인하셔야 합니다.
데이터베이스에 접속해서 accounts_user 테이블 내역을 꼭 확인해보세요.

데이터베이스를 삭제하시고 다시 migrate하셔도 동일한 오류가 발생하신다면,
accounts 앱의 마이그레이션 파일 중에 password 필드 생성과 관련된 마이그레이션이 누락이 된 것은 아닌가 싶습니다.

현재 accounts 앱의 마이그레이션 파일을 다른 경로에 백업해두시고,
accounts 앱에 대한 마이그레이션 파일 생성을 다시 해보시고, 서로 비교해보시는 건 어떨까요?

화이팅입니다. :-)

1

윤해빈

성격이 소심해서 db를 삭제하는걸 아예 고려를 안했는데 선생님 말씀보고 삭제하니까 충돌이 사라졌네요...models.py 구조를 여러번 바꾸면서 migrate 한게 원인이었나봅니다. 아예 싹 지우고 다시해보니 erd도 의도한대로 나오네요 감사합니다 ^^

안녕하세요.

0

49

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

275

1

useEffect 훅에서 else 유무에 따른 결과

0

211

1

useAxios 훅의 dependency array 설정

0

245

1

useEffect에서 변수 업데이트 관련 질문

0

382

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

268

1

bootstrap4

0

471

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

365

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

574

3

useState는 필수일까요?

0

263

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

600

4

Django allauth를 사용한 소셜 로그인 시 에러

0

655

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

556

2

useLocalStorage() 함수 사용여부

0

229

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

449

1

리듀서의 의미 재확인

0

430

1

simple-jwt Refresh Token 사용 노하우

0

899

2

docker compose 를 통한 배포 관련 오류 문의

0

672

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

365

1

is_like_user

0

233

1

related_name 오류

0

275

1

re_path 오류

0

259

1

re_path url

0

251

1

No post matches the given query

0

661

2