해결된 질문
작성
·
441
0
안녕하세요,
tests.py에
from django.test import TestCase, Client
from bs4 import BeautifulSoup
from .models import Post
class TestView(TestCase):
def setUp(self):
self.client = Client()
def test_post_list(self):
pass
이렇게만 입력해도 python manage.py test를 하면 다음과 오류가 납니다. (오류는 첫번째줄과 마지막 줄만 올립니다)
Creating test database for alias 'default'...
Traceback (most recent call last):
File "C:\Do_it_django_2\venv\lib\site-packages\django\db\models\options.py", line 608
, in get_field
return self.fields_map[field_name]
KeyError: 'updated_at'
raise FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: Post has no field named 'updated_at'
근데, 마이그레이션도 다 완료했고, models.py에도 updated_at이 선언되어 있습니다. 보니까 문제가 Post를 import하는 곳에서 나는것이 아니고, def test_post_list(self) 함수 자체에서 나는것 같더라고요. 이게 아마도 view의 PostList 클래스가 post_list.html을 자동으로 불러오는 것처럼 똑같이 test_post_list 도 post_list.html을 어떠한 명시없이 똑같이 참조하는 원리인것 같은데요.
어떻게 해결해야 할지 몰라 질문드립니다. 더 필요한 코드가 있으시면 말씀해주세요.
감사합니다.
답변 3
0
0
답변 감사합니다.
models.py
from django.db import models
import os
class Post(models.Model):
title = models.CharField(max_length=50)
hook_text = models.CharField(max_length=100, blank=True)
content = models.TextField()
head_image = models.ImageField(upload_to='blog/images/%Y/%m/%d/', blank=True)
file_upload = models.FileField(upload_to='blog/files/%Y/%m/%d/', blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# author: 추후 작성 예정
def __str__(self):
return f"{self.pk} {self.title}"
def get_absolute_url(self):
return f'/blog/{self.pk}'
def get_file_name(self):
return os.path.basename(self.file_upload.name)
def get_file_ext(self):
return self.get_file_name().split('.')[-1]
0