Django 프로젝트에서 Book과 Author 모델을 만들고, slug 필드를 자동 생성하려고 할 때 prepopulated_fields 설정 중 다음과 같은 에러를 만났습니다.
❗ 에러 메시지
OperationalError: no such column: book_outlet_author.slug
Admin 페이지에서 /admin/book_outlet/book/에 접근하자마자 위와 같은 500 오류가 발생했습니다.
🔎 원인 분석
이 에러는 models.py에 Author.slug 필드를 추가했지만, makemigrations 및 migrate를 하지 않아 DB 테이블에 컬럼이 생성되지 않았기 때문입니다.
Django는 admin 페이지에서 slug 값을 조회하려고 시도하지만, DB에는 해당 필드가 존재하지 않아 에러를 던진 것이죠.
✅ 해결 방법
1. models.py에서 slug 필드 및 자동 생성 로직 추가
from django.utils.text import slugify
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
slug = models.SlugField(default="", blank=True, null=False, db_index=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(f"{self.first_name}-{self.last_name}")
super().save(*args, **kwargs)
def __str__(self):
return f"{self.first_name} {self.last_name}"
slugify를 사용해 first_name과 last_name을 기반으로 slug를 자동 생성합니다.
2. admin.py에서 prepopulated_fields 설정
class AuthorAdmin(admin.ModelAdmin):
readonly_fields = ("slug",)
prepopulated_fields = {"slug": ("first_name", "last_name")}
3. 마이그레이션 적용
python manage.py makemigrations
python manage.py migrate
이 과정을 통해 모델 변경 사항이 실제 DB 테이블에도 반영됩니다.
🧪 결과 확인
- Admin 페이지에서 Author를 추가할 때, 이름 입력만으로 slug 필드가 자동으로 채워집니다.
- /admin/book_outlet/book/ 페이지에서 더 이상 500 에러가 발생하지 않고 정상 작동합니다.
- Book 모델도 동일한 방식으로 slug 자동 생성 및 등록 완료했습니다.
💡 마무리 팁
- Django에서 모델 필드를 추가하거나 수정했다면 반드시 makemigrations, migrate를 통해 DB에도 반영해야 합니다.
- 특히 admin에서 prepopulated_fields를 사용할 경우, 해당 필드가 DB에 실제 존재해야 하므로 꼭 확인하세요!
하지만 이런 방식으로 하지 않고 간단하게 해결하는 방법이 있습니다.
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
def full_name(self):
return f"{self.first_name} {self.last_name}"
def __str__(self):
return self.full_name()
slug를 활용하지 않는 경우, 단지 이 코드만 추가하면 동일하게 작성하는 것을 알 수 있습니다.
-> AUTHOR 만 띄우는 경우 <-

slug는 언제 활용해야 할까요? -- 다음 포스팅에서 계속
'Programming > Django' 카테고리의 다른 글
| [Python Django] 🐍 Django에서 ManyToManyField .add() 시 발생하는 ValueError 해결하기 (5) | 2025.07.23 |
|---|---|
| [Python Django] ❓Django에서 Author 모델에 slug를 꼭 만들어야 할까? (6) | 2025.07.23 |
| [Python Django] The Practical Guide - Admin, Relationship (3) | 2025.07.23 |
| [Python Django] The Practical Guide - Data & Models (3) (3) | 2025.07.22 |
| [Python Django] The Practical Guide - Data & Models (2) (2) | 2025.07.22 |