Django 유저 기능 구현하기리뷰 모델과 CRUD 기능 구현포도마켓: Post 모델 만들기

Q

Foreign Key constraint failed 에러

조회 1578

좋아요 0

2023년 3월 25일()




댓글 17

2023년 3월 25일
스샷만으로는 확인이 어렵고 modesl.py 작성하신 코드를 텍스트 형태로 올려주시면 좋을 것 같습니당
2023년 3월 25일
models.py 코드 올렸습니다!
2023년 3월 26일
models.py 코드 본문에도 수정해놓았습니다! from django.db import models from django.contrib.auth.models import AbstractUser from .validators import validate_no_special_character from django.core.validators import MinValueValidator # Create your models here. class User(AbstractUser): nickname = models.CharField( max_length=15, unique=True, null=True, error_messages={'unique': '이미 사용중인 닉네임입니다.'}, validators=[validate_no_special_character]) kakao_id = models.CharField(max_length=20, null=True, validators=[validate_no_special_character]) address = models.CharField(max_length=15, null=True, validators=[validate_no_special_character]) def __str__(self): return self.email class Post(models.Model): title = models.CharField(max_length=60) item_price = models.IntegerField(validators=[MinValueValidator(1)]) CONDITION_CHOICES = [ ('새제품', '새제품'), ('최상', '최상'), ('상', '상'), ('중', '중'), ('하', '하') ] item_condition = models.CharField(max_length=10, choices=CONDITION_CHOICES) item_details = models.TextField(blank=True) image1 = models.ImageField(upload_to='item_pics') image2 = models.ImageField(upload_to='item_pics', blank=True) image3 = models.ImageField(upload_to='item_pics', blank=True) author = models.ForeignKey(User, on_delete=models.CASCADE) dt_created = models.DateTimeField(auto_now_add=True) dt_updated = models.DateTimeField(auto_now=True) def __str__(self): return self.title
2023년 3월 26일
확인해보겠습니당!
2023년 3월 26일
models.py 만 봤을 땐 유의미한 차이를 모르겠네용 ㅠㅠ makemigrations 와 migrate 는 문제없이 진행을 하셨겠죵? 혹시 프로젝트 전체 파일을 제가 실행해볼 수는 없을까용
2023년 3월 26일
makemigrations와 migrate 모두 영상에 나오는 대로 똑같이 문제없이 실행하였습니다 ..! 코드를 어떻게 공유드리면 좋을까요? 여기서 며칠쨰 막혀있네요 ㅠㅜ
2023년 3월 27일
이메일 알려주시면 코드 공유드리겠습니다
2023년 3월 27일
인터넷을 찾아보며 해결을 해보았는데요, 그래도 여전히 질문이 남아있어 올립니다. 1) AUTH_USER_MODEL = 'podomarket.User' 을 정의하기 전에 admin에서 사용할 superuser와 몇몇 user들을 만들어주었었고, 기존의 유저 테이블이 아닌 podomarket.User를 유저 테이블로 사용하게 되면서 기존에 생성된 유저 테이블과 혼동을 한 것 같습니다. 2) 이에 대한 해결책으로 db.sqlite3 파일을 삭제하고, migration 폴더 전체를 삭제한 뒤에 python manage.py makemigrations & migrate을 해주니 문제가 해결 되었습니다. 하지만 기존의 유저들이 모두 삭제되어 다시 추가해줘야 했습니다. 3) 이렇게 기존의 유저들을 삭제하지 않고 해결할 방법은 없었을까요? 만약 이미 운영하는 서비스였더라면 기존 유저 DB를 삭제할 수는 없을테니까요
2023년 3월 27일
langedat@gmail.com 으로 보내주시면 됩니당!
2023년 3월 27일
네 제 Replit 코드 공유드렸습니다!
2023년 3월 27일
아.. 이제야 상황이 좀 이해가 되네용. 관리자 계정은 어떻게 추가시키셨나용? 관리자 페이지에서 직접 추가하신 건가요?
2023년 3월 27일
제가 생각하는 방법이 있는데 한번 재현해보고 얼마나 깔끔하게 처리되는지 확인해봐야겠네용
2023년 3월 27일
혹시 검색으로 해결하기 전 db 도 보관이 되어있을까용?
2023년 3월 27일
제가 생각했을 때는 기존 사용하시는 모델을 새 모델(예를 들어 NewUser)과 같이 생성한 후에 기존 db 를 NewUser 로 마이그레이션 한 후 사용하면 문제가 없지 않을까 생각이 되네용
2023년 3월 27일
관리자 계정은 shell에서 추가했습니다. 해결하기 전 DB는 따로 보관해두지 않았습니다 ,, 기존 DB를 저장한 다음에 새로 class를 만들고 마이그레이션 하면 된다는 거군요! 감사합니다
2023년 3월 28일
깔끔하게 재현이 되는지 한번 해보고 답변 다시 달겠습니당!
2023년 3월 28일
네 감사합니다 :)
A
1개의 답변이 있어요
질문자 채택



2023년 4월 14일

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇