작성
·
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
0
안녕하세요.
BaseModel 모델 클래스를 abstract=True로 선언하셨지만, Post 모델은 BaseModel 클래스를 상속받지 않고 models.Model 클래스를 상속받았기에, Post 모델에는 created_at 필드가 없어서 발생하는 오류입니다.
Post 모델의 부모 클래스를 models.Model이 아닌 BaseModel로 변경해보세요.
화이팅입니다. :-)