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

Young님의 프로필 이미지
Young

작성한 질문수

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

Timeline 포스팅 목록 조건에 날짜 범위 지정하기

FieldError at /instagram/post/

작성

·

327

0

안녕하세요, 선생님!

오늘도 신기한 기능 알려주셔서 감사합니다. 

그런데 model.py와 view.py 수정 후 migrate까지 했는데도, FieldError가 발생합니다. create_at에 문제가 있다고 추측만가능하고, 해결방법을 찾지 못했습니다.

정확하게 이 에러가 어떤 상황에서 발생하는지,
어떻게 해결할 수 있는지 조언해주실 수 있으신가요?

에러화면

view.py

from datetime import timedelta
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.shortcuts import render, redirect, get_object_or_404
from django.utils import timezone
from .forms import PostForm
from .models import Post


@login_required
def index(request):
timesince = timezone.now() - timedelta(days=3)
post_list = Post.objects.all()\
.filter(
Q(author=request.user) |
Q(author__in=request.user.following_set.all())
)\
.filter(
created_at__gte=timesince
)

suggested_user_list = get_user_model().objects.all()\
.exclude(pk=request.user.pk)\
.exclude(pk__in=request.user.following_set.all())[:3]


return render(request, "instagram/index.html", {
"post_list": post_list,
"suggested_user_list": suggested_user_list,
})

models.py

import re
from django.conf import settings
from django.db import models
from django.urls import reverse


# Create your models here.
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

class Meta:
abstract = True


class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
photo = models.ImageField(upload_to = "instagram/post/%Y/%m/%d")
caption = models.TextField(max_length=500)
tag_set = models.ManyToManyField('Tag', blank = True)
location = models.CharField(max_length=100)

def __str__(self):
return self.caption

답변 2

1

Young님의 프로필 이미지
Young
질문자

감사합니다. 해결하였습니다.

고쳤다고 생각했는데도 덤벙덤벙 놓치는 부분이 생기네요. 더 집중해서 꼼꼼히 따라가보도록 하겠습니다. 행복한 월요일 하루 보내세요!

0

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

안녕하세요.

BaseModel 모델 클래스를 abstract=True로 선언하셨지만, Post 모델은 BaseModel 클래스를 상속받지 않고 models.Model 클래스를 상속받았기에, Post 모델에는 created_at 필드가 없어서 발생하는 오류입니다.

Post 모델의 부모 클래스를 models.Model이 아닌 BaseModel로 변경해보세요.

화이팅입니다. :-)

Young님의 프로필 이미지
Young

작성한 질문수

질문하기